Я изо всех сил стараюсь получить больше, чем просто одно значение из списка, созданного на заказ.
Я могу получить «основное» значение из этого благодаря getItem(int pos)
, но так как я храню несколько значений для одной строки (строка означает каждый CustomList
в TableView
), я хотел бы иметь возможность получить соответствующие значения на ярлык, который я могу вытащить.Получите пользовательские друзья ListView из класса, расширяющего ArrayAdapter
Я уверен, что это проще, чем я это делаю, поэтому я надеюсь, что кто-то это сделал раньше.
У меня CustomList
класса,
public class CustomList extends ArrayAdapter<String>{
private final Activity context;
private final String[] labels;
private final Integer[] imageId;
private final String[] identifier;
public CustomList(Activity context,
String[] labels, Integer[] imageId, String[] id) {
super(context, R.layout.list_single, labels);
this.context = context;
this.labels = labels;
this.imageId = imageId;
this.identifier = id;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_single, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
TextView idTitle = (TextView) rowView.findViewById(R.id.identifier);
ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
txtTitle.setText(labels[position]);
idTitle.setText(identifier[position]);
imageView.setImageResource(imageId[position]);
return rowView;
}
public String getKey(int position, int category) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_single, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
TextView idTitle = (TextView) rowView.findViewById(R.id.identifier);
ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
if (category == 1) {
return idTitle.getText().toString();
} else if (category == 2) {
return "url:();";
} else {
return this.getItem(position);
}
}
}
Примечания: getKey
измученная, последняя попытка получения значений из этого ListView/CustomList
данных.
Я не могу, потому что любовь к ней вызывает эту функцию любым способом, формой или формой.
Вот как я использую этот CustomList
,
CustomList adapter = new
CustomList(MainActivity.this, urls, images, identifiers);
list=(ListView)findViewById(R.id.listView1);
list.setAdapter(adapter);
довольно прямо вперед, теперь позже в коде - более конкретно на кнопки - я хочу, чтобы получить доступ к данным, хранящимся в списке.
Я делаю это, выполнив следующие действия:
(Это где я сталкиваюсь в виду попойки)
list=(ListView)findViewById(R.id.listView1);
ListView listView = (ListView)findViewById(R.id.listView1);
ListAdapter table = listView.getAdapter();
for(int i = 0; i < table.getCount(); i++){
Object row = table.getItem(i);
Log.i("Test", row.toString());
}
Что я выберусь это значение CustomList.labels[i]
, что не все нечетные поскольку я предполагаю, что это вызывает getItem
из ArrayAdapter
.
Я пробовал делать @Override
на getItem
, но так как требуется только один аргумент, то есть position
, я не был достаточно знаком с Java, чтобы заставить это работать для меня.
Любая идея, как я мог бы получить либо переменные imageId
, либо identifier
от каждого элемента строки listView1
?
В случае если вам нужен list_single.xml
, который является расположение listView1
(по крайней мере, это моя интерпретация того, что делает этот файл), здесь:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow>
<ImageView
android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"/>
<TextView
android:id="@+id/identifier"
android:layout_width="wrap_content"
android:visibility="invisible"
android:layout_height="50dp" />
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="50dp" />
</TableRow>
</TableLayout>
Вы можете улучшить это решение, используя ViewHolder шаблон https://developer.android.com/training/improving-layouts/smooth-scrolling.html# ViewHolder или RecyclerView –
Буквально через минуту после того, как я задал глупый вопрос, я понял это. Вероятно, это очень важно для настройки этого параметра, но вот как я это сделал: 'ArrayList itemsArrayList = new ArrayList (); CustomListAdapter moo = новый CustomListAdapter (MainActivity.this, itemsArrayList); moo.getItem (0) .getLabel(); '- В случае, если кто-то задается вопросом. –
Torxed
Ok нет, я до сих пор не знаю, как инициализировать это с помощью фактических значений ... Как/Где я, например, поместил свои первые 'String [] метки? – Torxed