3

我有一个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" />  

我如何在我的列表视图中添加数据。

  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) {


                }
            });

我正在尝试更新 listview 值:

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());

但这并没有改变价值

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

4

5 回答 5

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();
                }
            }
        });
于 2013-08-19T07:27:28.800 回答
0

这个过程非常简单,您可以做的是,在单击图像视图时,遍历您用于填充列表视图的数组适配器。在迭代时,您可以声明一个数组并继续在其中插入迭代值。希望能帮助到你!

于 2013-08-19T07:19:34.303 回答
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");

你有没有尝试过这样的事情

于 2013-08-19T07:19:46.460 回答
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.
于 2013-08-19T07:19:56.993 回答
0

要更改列表项的值,您应该在适配器类中进行。所以如果你的项目有一个TextView你应该像这样在适配器中编写一个方法

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

使用视图支架时也是如此。为了获得所有项目的价值,基本上你应该按照第一个答案所说的去做。

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(); } } }); 但除了getCount你可以使用size(). 但至少对我来说,适配器和列表之间的这些关系有点令人困惑。希望能帮助到你。

于 2015-04-26T09:02:52.433 回答