ArrayAdapter适配不同数据源方法

avatar
作者
筋斗云
阅读量:0

ArrayAdapter 是 Android 中用于将数据与列表视图(如 ListViewGridViewSpinner)进行绑定的类。要使用 ArrayAdapter 适配不同的数据源,你需要创建一个自定义的适配器类,该类继承自 ArrayAdapter 并重写相关方法。以下是一个简单的示例,展示了如何创建一个适配器类以适配两种不同的数据源:

  1. 首先,创建一个自定义的适配器类,例如 CustomArrayAdapter,并继承自 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.List;  public class CustomArrayAdapter extends ArrayAdapter<Object> {      public CustomArrayAdapter(Context context, int resource, List<Object> objects) {         super(context, resource, objects);     }      @Override     public View getView(int position, View convertView, ViewGroup parent) {         // 获取当前项的数据         Object item = getItem(position);          // 检查数据类型并进行相应的处理         if (item instanceof String) {             // 如果数据是字符串,使用一个 TextView 显示             TextView view = (TextView) convertView;             if (view == null) {                 view = new TextView(getContext());             }             view.setText((String) item);             return view;         } else if (item instanceof Integer) {             // 如果数据是整数,使用另一个 TextView 显示             TextView view = (TextView) convertView;             if (view == null) {                 view = new TextView(getContext());             }             view.setText(String.valueOf((Integer) item));             return view;         }          // 如果数据类型不匹配,返回 null 或抛出异常         return null;     } } 
  1. 在你的 Activity 或 Fragment 中,创建一个 CustomArrayAdapter 实例并绑定到列表视图:
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 {      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);          // 创建数据源         List<Object> data = new ArrayList<>();         data.add("Hello");         data.add(42);         data.add(true);          // 创建适配器并绑定到列表视图         CustomArrayAdapter adapter = new CustomArrayAdapter(this, android.R.layout.simple_list_item_1, data);         ListView listView = findViewById(R.id.listView);         listView.setAdapter(adapter);     } } 

在这个示例中,我们创建了一个 CustomArrayAdapter 类,它可以处理两种不同类型的数据:字符串和整数。在 getView 方法中,我们检查数据类型并根据类型创建相应的 TextView。然后,在 Activity 中,我们创建了一个包含不同类型数据的列表,并使用 CustomArrayAdapter 将其绑定到 ListView

广告一刻

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