要实现ArrayAdapter
的动态更新,你可以通过以下几个步骤来完成:
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()
方法中清空并添加新的数据。当数据发生变化时,调用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);
// 模拟动态更新数据
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);
}
}
在这个示例中,我们首先创建了一个CustomArrayAdapter
实例,并将其设置为ListView
的适配器。然后,我们调用updateData()
方法来模拟动态更新数据。在实际应用中,你可以根据需要从服务器获取新数据并更新适配器。