我不清楚 Android Studio 中 Listview 适配器的具体情况。
我见过很多使用它们的例子,但从未见过我想要的使用方式。
我试图用数组中同一类对象的参数填充 ListView 。
我有一个包含 2 个字符串参数和 1 个本地时间参数的对象数组。
到目前为止,我只看到了一些示例,其中它们赋予适配器的每个不同值都是单独数组的一部分。
我想做的,是为适配器提供来自同一数组的 3 个不同对象参数。
这可能吗?
我认为这是可能的,但我不知道该怎么做。
示例:
public class MainActivity extends AppCompatActivity {
ListView myListView;
String[] items;
String[] prices;
String[] descriptions;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
myListView = (ListView) findViewById(R.id.myListView);
items = res.getStringArray(R.array.items);
prices = res.getStringArray(R.array.prices);
descriptions = res.getStringArray(R.array.descriptions);
ItemAdapter itemAdapter = new ItemAdapter(this, items, prices,
descriptions);
myListView.setAdapter(itemAdapter);
这里的商品、价格和描述被声明为字符串数组,并在资源中实例化为 3 个字符串数组。稍后在 Adapter 类构造函数中引用它们。
相反,我希望它们指向的不是数组,而是单个数组中同一类对象的参数。
或者,如果这是不可能的,我可以从数组中获取所有对象的参数,并为每个对象创建一个单独的数组,但我觉得这是不必要的,并且必须有一个简单的方法来做到这一点,但我只是不知道该怎么做。
编辑: 我在 youtube 上找到了一个名为“Android Beginner Tutorial #8 - Custom ListView Adapter For Displaying Multiple Columns”的教程视频,这正是我正在寻找的内容。
最佳答案
您应该尝试使用 BaseAdapter。
import android.widget.ListAdapter;
public class ListAdapter extends BaseAdapter implements ListAdapter {
private ArrayList<Object> list;
private Context context;
ListAdapter(ArrayList<Object> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int pos) {
return list.get(pos);
}
@Override
public long getItemId(int pos) {
return 0L;
//just return 0 if your list items do not have an Id variable.
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
return view;
}
}
并将其调用到您的 Activity 中
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Object> myList= new ArrayList<>();
//here you can add elements of type Object to your ListAdapter
//instantiate custom adapter
ListAdapter adapter = new ListAdapter(myList, this);
//handle listview and assign adapter
ListView lView = findViewById(android.R.id.list);
lView.setAdapter(adapter);
}
}
关于java - Listview 适配器可以使用数组对象参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53176782/