Как я могу получить три значения TextView?

#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? итак, дайте мне знать, тогда я предложу лучший способ сделать это.