ArrayAdapter
是 Android 中用于将数据与列表视图(如 ListView
、GridView
或 Spinner
)进行绑定的类。要使用 ArrayAdapter
适配不同的数据源,你需要创建一个自定义的适配器类,该类继承自 ArrayAdapter
并重写相关方法。以下是一个简单的示例,展示了如何创建一个适配器类以适配两种不同的数据源:
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;
}
}
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
。