ArrayAdapter怎样实现动态更新

avatar
作者
猴君
阅读量:0

要实现ArrayAdapter的动态更新,你可以通过以下几个步骤来完成:

  1. 创建一个自定义的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()方法通知适配器更新视图。

  1. 在Activity中使用自定义的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()方法来模拟动态更新数据。在实际应用中,你可以根据需要从服务器获取新数据并更新适配器。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!