Как я могу получить три значения TextView? - PullRequest
0 голосов
/ 05 марта 2019

В моем списке просмотра есть три вида текста и один флажок в горизонтальном порядке.

Мой 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?

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

Вы можете использовать адаптер для доступа к вашим текстовым полям и флажок.Передайте свой список адаптеру следующим образом:

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;
    }
}
0 голосов
/ 05 марта 2019

Если вы хотите получить список данных, то я хочу знать о том, чтобы установить данные.Вы устанавливаете модель и добавляете адаптер или берете статический строковый массив?поэтому дайте мне знать, тогда я предложу лучший способ сделать это.

0 голосов
/ 05 марта 2019

Если вы поймали выбранный объект справа, вы должны преобразовать его в TextView, а затем получить текст TextView, подобный следующему:

String vo = ((TextView)adapterView.getAdapter().getItem(position)).getText().toString();
Log.d(TAG, vo);

ИЛИ

Перейтикласс вашего адаптера и создайте интерфейс для получения значений элемента, по которому щелкнули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...