#android #listview #textview
#Android #listview #textview
Вопрос:
Мой listview имеет три textview и один флажок в горизонтальном порядке.
Мой listview xml
код
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="TEXT"
android:id="@ id/textView1"
android:textSize="20sp"
android:gravity="center"
android:layout_weight="5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="TEXT"
android:id="@ id/textView2"
android:textSize="20sp"
android:gravity="center"
android:layout_weight="10" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="TEXT"
android:id="@ id/textView3"
android:textSize="20sp"
android:gravity="center"
android:layout_weight="5" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@ id/checkBox1"
android:focusable="false"
android:clickable="false"
android:layout_gravity="right"
android:layout_marginRight="10dp"/>
и MainActivity.java
код
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView,
View view, int position, long id) {
Object vo = (Object)adapterView.getAdapter().getItem(position);
Log.d(TAG, String.valueOf(vo));
}
});
Вывод журнала для String.valueOf(vo)
является
sn.studyroom.ListViewItem@f085546
Как я могу получить каждое из трех Textview
значений?
Комментарии:
1. можете ли вы написать полный код адаптера здесь? нам нужно посмотреть, как вы передаете данные списка в ListView
2. добро пожаловать сюда, сначала вам нужно это проверить — amitandroid.blogspot.com/2013/03 /…
3. Значения textview получены из данных, которые вы ему передали. И здесь ‘vo’ — это tread как обычный объект. Вероятно, вы можете преобразовать его в ListViewItem и получить данные из определенного вами элемента.
4. просто напишите этот код -> Элемент ListViewItem = (ListViewItem) parent.getItemAtPosition(позиция) ; Log.d(ТЕГ,item.getName()); Log.d(ТЕГ,item.getNumber()); Log.d(ТЕГ,item.getTime());
Ответ №1:
Если вы правильно определили выбранный объект, вы должны преобразовать его в TextView
, а затем получить свой TextView
текст следующим образом:
String vo = ((TextView)adapterView.getAdapter().getItem(position)).getText().toString();
Log.d(TAG, vo);
или
Перейдите в свой класс адаптера и создайте интерфейс для получения значений выбранного элемента.
Ответ №2:
Вы можете использовать адаптер для доступа к вашим текстовым полям и флажку. Передайте свой список адаптеру, подобному этому:
CustomListAdapter adapter = new CustomListAdapter (context, yourList);
yourListView.setAdapter(adapter);
Создайте подобный адаптер.
public class CustomListAdapter extends BaseAdapter {
Context context;
List<ListObject> yourList;
public CustomListAdapter (Context context, List<ListObject> yourList) {
this.context = context;
this.yourList= yourList;
}
public void refreshAdapter(List<ListObject> yourList){
this.yourList= yourList;
notifyDataSetChanged();
}
private static class ViewHolder {
TextView textView1, textView2, textView3;
CheckBox checkBox1;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return yourList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return yourList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.your_adapter_layout, null);
holder = new ViewHolder();
holder.textView1= convertView.findViewById(R.id.textView1);
holder.textView2= convertView.findViewById(R.id.textView2);
holder.textView3= convertView.findViewById(R.id.textView3);
holder.checkBox1= convertView.findViewById(R.id.checkBox1);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//TODO: you can do whatever you want to do here
return convertView;
}
}
Ответ №3:
Если вы хотите восстановить данные списка, я хочу знать, как установить данные. Вы устанавливаете модель и добавляете в адаптер или берете статическую строку arraylist? итак, дайте мне знать, тогда я предложу лучший способ сделать это.