【发布时间】:2015-11-03 15:52:37
【问题描述】:
我一直在研究这个 Android 项目,并且一直在努力解决它。我目前有两个列表视图,都显示数据。
我不确定如何在单击项目时将项目从一个列表视图复制到另一个。
这是我的代码:
public class MainActivity extends Activity {
private ListView mListView1, mListView2;
private String [] rock ={"The Beatles", "The Rolling Stones", "Jimi Hendrix", "Elvis Presley", "Pink Floyd", "AC/DC"};
private String [] pop ={"Michael Jackson", "Beyonce", "Rihanna", "Justin Bieber", "Lady Gaga", "Katy Perry"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView1 = (ListView)findViewById(R.id.listView1);
mListView2 = (ListView)findViewById(R.id.listView2);
mListView1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, rock));
mListView2.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, pop));
ListUtils.setDynamicHeight(mListView1);
ListUtils.setDynamicHeight(mListView2);
}
public static class ListUtils {
public static void setDynamicHeight(ListView mListView) {
ListAdapter mListAdapter = mListView.getAdapter();
if (mListAdapter == null) {
// when adapter is null
return;
}
int height = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(mListView.getWidth(), MeasureSpec.UNSPECIFIED);
for (int i = 0; i < mListAdapter.getCount(); i++) {
View listItem = mListAdapter.getView(i, null, mListView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
height += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = mListView.getLayoutParams();
params.height = height + (mListView.getDividerHeight() * (mListAdapter.getCount() - 1));
mListView.setLayoutParams(params);
mListView.requestLayout();
}
}
}
然后是我的 main.xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="Rock" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:background="#B29090" >
</ListView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:gravity="center_vertical"
android:text="Pop" />
<ListView
android:id="@+id/listView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:background="#4A9C67" >
</ListView>
</LinearLayout>
例如,当单击 The Beatles 时,我希望将其复制到弹出列表视图中。
我已经尝试过使用这个(下面的示例在另一个答案中找到)但它不起作用,因为它说列表视图没有 add() 或 notifyDataSetChange() 方法。
listView1.setOnItemClickListener(this);
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
datasListView2.add(valuesListView1.get(position));
listView2.notifyDataSetChange();
}
【问题讨论】:
-
我不确定,但也许你应该做 adapter.notifyDataSetChanged();
标签: java android listview mobile android-listview