📜  android绑定适配器多参数——随便(1)

📅  最后修改于: 2023-12-03 14:39:12.123000             🧑  作者: Mango

Android绑定适配器多参数——随便

在Android开发中,ListView、GridView等控件都需要通过适配器(Adapter)来显示数据。有时候,我们需要传递多个参数给适配器,在显示数据时才能更准确、灵活地呈现数据。

本文将介绍如何将多个参数绑定到适配器,并在ListView中展示数据。

步骤一:定义Java类

首先,我们需要定义一个Java类,用于存储我们要传递的参数,例如:

public class Data {
    private String name;
    private String age;
    
    public Data(String name, String age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public String getAge() {
        return age;
    }
}
步骤二:定义适配器

接下来,我们需要定义一个继承自BaseAdapter的适配器,例如:

public class MyAdapter extends BaseAdapter {
    private Context mContext;
    private List<Data> mDataList;
    
    public MyAdapter(Context context, List<Data> dataList) {
        mContext = context;
        mDataList = dataList;
    }
    
    @Override
    public int getCount() {
        return mDataList.size();
    }
    
    @Override
    public Object getItem(int position) {
        return mDataList.get(position);
    }
    
    @Override
    public long getItemId(int position) {
        return position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);
            holder.nameTextView = (TextView) convertView.findViewById(R.id.name_text_view);
            holder.ageTextView = (TextView) convertView.findViewById(R.id.age_text_view);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        Data data = mDataList.get(position);
        holder.nameTextView.setText(data.getName());
        holder.ageTextView.setText(data.getAge());
        return convertView;
    }
    
    private static class ViewHolder{
        TextView nameTextView;
        TextView ageTextView;
    }
}
步骤三:绑定适配器

最后,我们需要在Activity或Fragment中绑定适配器,例如:

public class MainActivity extends AppCompatActivity {
    private ListView mListView;
    private List<Data> mDataList;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.list_view);
        mDataList = new ArrayList<Data>();
        for (int i = 0; i < 10; i++) {
            mDataList.add(new Data("name " + i, "age " + i));
        }
        MyAdapter adapter = new MyAdapter(this, mDataList);
        mListView.setAdapter(adapter);
    }
}

至此,便完成了在ListView中通过适配器传递多参数的操作。

总结

本文介绍了如何在Android中通过适配器绑定多个参数,并在ListView中展示数据。实现的关键在于定义一个Java类来存储参数,然后通过适配器将参数绑定到控件上。

代码片段如下:

public class Data {
    private String name;
    private String age;
    
    public Data(String name, String age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public String getAge() {
        return age;
    }
}

public class MyAdapter extends BaseAdapter {
    private Context mContext;
    private List<Data> mDataList;
    
    public MyAdapter(Context context, List<Data> dataList) {
        mContext = context;
        mDataList = dataList;
    }
    
    @Override
    public int getCount() {
        return mDataList.size();
    }
    
    @Override
    public Object getItem(int position) {
        return mDataList.get(position);
    }
    
    @Override
    public long getItemId(int position) {
        return position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);
            holder.nameTextView = (TextView) convertView.findViewById(R.id.name_text_view);
            holder.ageTextView = (TextView) convertView.findViewById(R.id.age_text_view);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        Data data = mDataList.get(position);
        holder.nameTextView.setText(data.getName());
        holder.ageTextView.setText(data.getAge());
        return convertView;
    }
    
    private static class ViewHolder{
        TextView nameTextView;
        TextView ageTextView;
    }
}

public class MainActivity extends AppCompatActivity {
    private ListView mListView;
    private List<Data> mDataList;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.list_view);
        mDataList = new ArrayList<Data>();
        for (int i = 0; i < 10; i++) {
            mDataList.add(new Data("name " + i, "age " + i));
        }
        MyAdapter adapter = new MyAdapter(this, mDataList);
        mListView.setAdapter(adapter);
    }
}