溫馨提示×

ArrayAdapter怎樣實現動態(tài)更新

小樊
81
2024-10-12 09:09:04
欄目: 編程語言

要實現ArrayAdapter的動態(tài)更新,你可以通過以下幾個步驟來完成:

  1. 創(chuàng)建一個自定義的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()方法通知適配器更新視圖。

  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);

        // 模擬動態(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)更新數據。在實際應用中,你可以根據需要從服務器獲取新數據并更新適配器。

0