Если вы хотите иметь ListView в AppCompatActivity, а не ListActivity, вы можете сделать следующее (Изменить ответ Shardul):
public class ListViewDemoActivity extends AppCompatActivity {
//LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
ArrayList<String> listItems=new ArrayList<String>();
//DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW
ArrayAdapter<String> adapter;
//RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
int clickCounter=0;
private ListView mListView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_list_view_demo);
if (mListView == null) {
mListView = (ListView) findViewById(R.id.listDemo);
}
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);
setListAdapter(adapter);
}
//METHOD WHICH WILL HANDLE DYNAMIC INSERTION
public void addItems(View v) {
listItems.add("Clicked : "+clickCounter++);
adapter.notifyDataSetChanged();
}
protected ListView getListView() {
if (mListView == null) {
mListView = (ListView) findViewById(R.id.listDemo);
}
return mListView;
}
protected void setListAdapter(ListAdapter adapter) {
getListView().setAdapter(adapter);
}
protected ListAdapter getListAdapter() {
ListAdapter adapter = getListView().getAdapter();
if (adapter instanceof HeaderViewListAdapter) {
return ((HeaderViewListAdapter)adapter).getWrappedAdapter();
} else {
return adapter;
}
}
}
И в вашем макете вместо использования android:id="@android:id/list"
вы может использовать android:id="@+id/listDemo"
Итак, теперь вы можете иметь ListView
внутри нормального AppCompatActivity
.
При отладке кода вы или отладчик используете print
для отображения массивов NumPy. Команда print
не представляет то, что вам нужно, чтобы определить массив. Он применяет специальные правила отображения для облегчения презентации.
В этом случае вам нужно убедиться, что вы используете ,
для разделения значений в массиве NumPy:
import numpy as np
m = np.array([4, 5, 6])
n = np.array([1, 2, 3])
Это проблема синтаксиса и кодирования против представления:
>>> print 1e3
1000.0
Как можно видеть ... это не печатает 1e3
. Он печатает 1000.0
. Но означает ли это, что 1e3
не равно 1000.0
?
>>> print 1e3 == 1000.0
True
№. Он равен. Таким образом, 1e3
и 1000.0
являются семантически одинаковыми, но выглядят по-разному синтаксически.
>>> print "hi"
hi
, но затем:
>>> print hi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'hi' is not defined
hi
и "hi"
можно считать семантически идентичными, но синтаксически они означают совершенно разные вещи. В какой печати он печатает «строчную версию» объекта / значения. Это не обязательно печатает его так же, как вы вводите его в код.
>>> class Animal:
... def __str__(self):
... return "Cat"
...
>>> print Animal()
Cat
Это печатает Cat
, но мы не можем использовать Cat
для создания животного.
Теперь для синтаксиса списков в python требуются запятые. Также ... numpy массивы ARE NOT списки. У них разные типы. Даже если строковое представление WERE одинаково: «5» и 5 имеют одно и то же строковое представление, но:
>>> print "5"
5
>>> print 5
5
Просто потому, что str(a) == str(b)
не означает, что a == b
и не подразумевает type(a) == type(b)
.
они даже не одного типа. Одно целое, а другое - строка. Если вы определяете свой собственный тип, вы можете определить строковое представление для своего типа, но это не изменит синтаксис языка.
Что numpy делает что-то вроде этого:
>>> class Array:
... def __init__(self, xs):
... self.xs = xs
... def __str__(self):
... return "[%s]" % (" ".join(map(str, self.xs)))
...
>>> arr = Array([1,2,3])
>>> arr
<__main__.Array instance at 0x7f783f257ef0>
>>> print arr
[1 2 3]
Он просто определяет строковое представление. В противном случае вы не сможете его распечатать:
>>> class Array:
... def __init__(self, xs):
... self.xs = xs
...
>>> arr = Array([1,2,3])
>>> print arr
<__main__.Array instance at 0x7f783f257f38>
Однако мы не можем ожидать, что, когда мы вводим строковое представление чего-то в наш код, это правильный код ... потому что это просто строковое представление something ... это не обязательно действительный код.
print(np.array([4, 5, 6]))
? – jpp 13 July 2018 в 12:06print
. Это чисто проблема отображения / презентации. Вы не должны беспокоиться о дисплее (это не то, что вы контролируете). Сосредоточьтесь на правильном синтаксисе, что означает использование запятых. – jpp 13 July 2018 в 12:43