【问题标题】:How can I get three TextView values?如何获得三个 TextView 值?
【发布时间】:2019-03-05 06:46:37
【问题描述】:

我的列表视图有水平顺序的三个文本视图和一个复选框。

我的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 值中的每一个?

【问题讨论】:

  • 你能在这里写出适配器的完整代码吗?我们需要看看你如何将列表数据传递给 ListView
  • 欢迎来到这里,您需要先检查一下 - amitandroid.blogspot.com/2013/03/…
  • 文本视图的值来自您传递给它的数据。这里的“vo”是作为一个普通对象的踏步。您可能会将其转换为 ListViewItem,并从您定义的项目中获取数据。
  • 只写这段代码 -> ListViewItem item = (ListViewItem) parent.getItemAtPosition(position) ; Log.d(TAG,item.getName()); Log.d(TAG,item.getNumber()); Log.d(TAG,item.getTime());

标签: android listview textview


【解决方案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】:

      如果您想检索列表数据,那么我想知道设置数据。您是设置模型并添加适配器还是采用静态字符串数组列表?所以让我知道然后我会建议更好的方法来做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多