要實現ArrayAdapter
的動態(tài)更新,你可以通過以下幾個步驟來完成:
ArrayAdapter
類:import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class CustomArrayAdapter extends ArrayAdapter<String> {
private List<String> dataList;
public CustomArrayAdapter(Context context, int resource, List<String> objects) {
super(context, resource, objects);
this.dataList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
viewHolder = new ViewHolder();
viewHolder.textView = convertView.findViewById(android.R.id.text1);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(dataList.get(position));
return convertView;
}
public void updateData(List<String> newDataList) {
this.dataList.clear();
this.dataList.addAll(newDataList);
notifyDataSetChanged();
}
private static class ViewHolder {
TextView textView;
}
}
在這個自定義的ArrayAdapter
類中,我們添加了一個dataList
成員變量來存儲數據源,并在updateData()
方法中清空并添加新的數據。當數據發(fā)生變化時,調用notifyDataSetChanged()
方法通知適配器更新視圖。
ArrayAdapter
:import android.os.Bundle;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private CustomArrayAdapter customArrayAdapter;
private List<String> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.listView);
dataList = new ArrayList<>();
dataList.add("Item 1");
dataList.add("Item 2");
dataList.add("Item 3");
customArrayAdapter = new CustomArrayAdapter(this, android.R.layout.simple_list_item_1, dataList);
listView.setAdapter(customArrayAdapter);
// 模擬動態(tài)更新數據
updateData();
}
private void updateData() {
List<String> newDataList = new ArrayList<>();
newDataList.add("New Item 1");
newDataList.add("New Item 2");
newDataList.add("New Item 3");
customArrayAdapter.updateData(newDataList);
}
}
在這個示例中,我們首先創(chuàng)建了一個CustomArrayAdapter
實例,并將其設置為ListView
的適配器。然后,我們調用updateData()
方法來模擬動態(tài)更新數據。在實際應用中,你可以根據需要從服務器獲取新數據并更新適配器。