设置值并获取listview Android中所有项目的值

时间:2013-08-19 07:11:39

标签: android android-listview

我有一个ListView

<ListView
        android:id="@+id/list"
        android:layout_width="290dp"
        android:layout_height="166dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:visibility="gone"
        android:choiceMode="singleChoice" />

还有ImageView

<ImageView
        android:id="@+id/cont"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="30dp"
        android:src="@drawable/img" />  

我如何在listview中添加数据。

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, list);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {


                }
            });

我正在尝试更新列表视图值:

View v=listView.getChildAt(position);
                    TextView tv= (TextView) v.findViewById(android.R.id.text1);
                    tv.setText(firstNameDialog.getText().toString().trim().toString()+" "+lastNameDialog.getText().toString().trim().toString());

但这并没有改变价值

我希望在单击图像视图时,我可以获取listview项的值以以数组的形式存储。我怎样才能获得列表视图的所有项目值以及如何在单击的项目上再次设置值

5 个答案:

答案 0 :(得分:1)

imageView.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                int count = listView.getAdapter().getCount();
                String[] listData = new String[count];
                for (int i = 0; i < count; i++) {
                    listData[i] = listView.getAdapter().getItem(i).toString();
                }
            }
        });

答案 1 :(得分:0)

这个过程很简单,你可以做的是,在点击图片视图时,迭代你用来填充列表视图的数组适配器。迭代时,您可以声明一个数组并继续在其中插入迭代值。希望它有所帮助!

答案 2 :(得分:0)

int wantedPosition = position; // Whatever position you're looking for
int firstPosition = mList.getFirstVisiblePosition() -mList.getHeaderViewsCount();

int wantedChild = wantedPosition - firstPosition;
if (wantedChild < 0 || wantedChild >= mList.getChildCount()) {
    return;
}

Button btnEdit = (Button)wantedView.findViewById(R.id.btnEdit);
btnEdit.setText("my new message");

你有没有试过这样的东西

答案 3 :(得分:0)

使用adapter。在循环中从适配器获取值:

StringBuilder b = new StringBuilder();
for(int i=0;i>adapter.getCount();i++)
    b.append(adapter.getItem(i));//May be toString() should be used.

答案 4 :(得分:0)

要更改列表项的值,您应该在适配器类中执行此操作。 因此,如果您的项目有TextView,您应该在适配器中编写一个方法,如此

public void changeText(String newValue) {
this.myTextView.setText(newValue);
}

使用视图持有者时也是如此。 为了得到所有的项目值,基本上你应该做第一个回答说。

  

imageView.setOnClickListener(new View.OnClickListener(){      public void onClick(查看v){                   int count = listView.getAdapter()。getCount();                   String [] listData = new String [count];                   for(int i = 0; i&lt; count; i ++){                       listData [i] = listView.getAdapter()。getItem(i).toString();                   }               }           });   但除getCount外,您可以使用size()。   但至少对我来说,适配器和列表之间的这些关系有点令人困惑。   希望它有所帮助。