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
。