Android Studio:如何将项目从列表视图添加到列表视图 onClick
Android Studio: How to add an item from listview1 to listview2 onClick
对 Android Studio 很陌生,正在尝试解决以下问题;我有 2 个列表视图,想 'onClick' 添加一个项目从 listView1 到 listView2。
单击(和添加)的项目必须存储在 ArrayList1 --> ArrayList2 中。
我该怎么做?
布局截图。
https://imgur.com/a/7nJ0uX9
我已尝试按照 YouTube 教程来解决此问题,但它们似乎并未明确涵盖我的问题。
public class SearchFilter extends AppCompatActivity {
private static final String TAG = "SearchActivity";
private ArrayAdapter adapter1;
private ArrayAdapter adapter2;
private ListView listView1;
private ListView listView2;
private String names1[] = new String[] {"mitch", "luke", "samantha", "jessi", "janelle", "jordan", "rick"};
private String [] names2 = new String[names1.length];
private List name1List = new ArrayList();
private List name2List = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_filter);
for(String a : names1){
name1List.add(a);
}
for (String b : names2){
name2List.add(b);
}
listView1 = (ListView) findViewById(R.id.listView1);
listView2 = (ListView) findViewById(R.id.listView2);
adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name1List);
listView1.setAdapter(adapter1);
adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name2List);
listView2.setAdapter(adapter2);
EditText theFilter = (EditText) findViewById(R.id.searchFilter);
Log.d(TAG, "onCreate: Started");
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
name2List.add(name1List.get(position));
adapter2.notifyDataSetChanged();
}
});
theFilter.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
(SearchFilter.this).adapter1.getFilter().filter(charSequence);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
}
Logcat:
2019-10-16 06:16:38.843 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 06:48:39.276 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 07:52:39.608 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 10:00:39.972 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 10:00:41.539 536-536/? E/FirebaseInstanceId: Failed to start service while in background: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.firebase.INSTANCE_ID_EVENT pkg=com.google.android.apps.messaging cmp=com.google.android.apps.messaging/.fcm.BugleFirebaseInstanceIDService (has extras) }: app is in background uid UidRecord{7000ddf u0a54 RCVR idle change:idle|uncached procs:1 seq(0,0,0)}
2019-10-16 12:12:47.116 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:13:17.318 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: QUOTA_EXCEEDED
2019-10-16 12:14:17.534 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:16:17.706 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:20:36.753 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:28:44.679 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:45:19.843 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
这可能会有所帮助。 notifyDataSetChanged()
不足以刷新 ListView 数据,必须先调用 setAdapter() 才能正确加载信息。做如下:-
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
对 Android Studio 很陌生,正在尝试解决以下问题;我有 2 个列表视图,想 'onClick' 添加一个项目从 listView1 到 listView2。
单击(和添加)的项目必须存储在 ArrayList1 --> ArrayList2 中。
我该怎么做?
布局截图。 https://imgur.com/a/7nJ0uX9
我已尝试按照 YouTube 教程来解决此问题,但它们似乎并未明确涵盖我的问题。
public class SearchFilter extends AppCompatActivity {
private static final String TAG = "SearchActivity";
private ArrayAdapter adapter1;
private ArrayAdapter adapter2;
private ListView listView1;
private ListView listView2;
private String names1[] = new String[] {"mitch", "luke", "samantha", "jessi", "janelle", "jordan", "rick"};
private String [] names2 = new String[names1.length];
private List name1List = new ArrayList();
private List name2List = new ArrayList();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_filter);
for(String a : names1){
name1List.add(a);
}
for (String b : names2){
name2List.add(b);
}
listView1 = (ListView) findViewById(R.id.listView1);
listView2 = (ListView) findViewById(R.id.listView2);
adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name1List);
listView1.setAdapter(adapter1);
adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name2List);
listView2.setAdapter(adapter2);
EditText theFilter = (EditText) findViewById(R.id.searchFilter);
Log.d(TAG, "onCreate: Started");
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
name2List.add(name1List.get(position));
adapter2.notifyDataSetChanged();
}
});
theFilter.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
(SearchFilter.this).adapter1.getFilter().filter(charSequence);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
}
Logcat:
2019-10-16 06:16:38.843 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 06:48:39.276 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 07:52:39.608 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 10:00:39.972 29135-29191/? E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 10:00:41.539 536-536/? E/FirebaseInstanceId: Failed to start service while in background: java.lang.IllegalStateException: Not allowed to start service Intent { act=com.google.firebase.INSTANCE_ID_EVENT pkg=com.google.android.apps.messaging cmp=com.google.android.apps.messaging/.fcm.BugleFirebaseInstanceIDService (has extras) }: app is in background uid UidRecord{7000ddf u0a54 RCVR idle change:idle|uncached procs:1 seq(0,0,0)}
2019-10-16 12:12:47.116 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:13:17.318 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: QUOTA_EXCEEDED
2019-10-16 12:14:17.534 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:16:17.706 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:20:36.753 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:28:44.679 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
2019-10-16 12:45:19.843 3132-3205/com.google.android.youtube E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
这可能会有所帮助。 notifyDataSetChanged()
不足以刷新 ListView 数据,必须先调用 setAdapter() 才能正确加载信息。做如下:-
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();