gpt4 book ai didi

android - 将三个 ArrayList 合二为一并在自定义 ListView 中查看

转载 作者:行者123 更新时间:2023-11-29 01:10:37 26 4
gpt4 key购买 nike

我正在尝试发送这个 ArrayList :

all1 = all.toArray(new String[all.size()]);

这是从 JSON 解析的这三个数组列表的总和:

for (int j = 0; j < itemNames.size(); j++) {
all.add(brandNames.get(j) + " " + itemNames.get(j) + " " + Carbs.get(j));
}

到自定义 ListView ,但在设置适配器时遇到问题。

我有一个自定义 ListView ,如下所示(search_list_view):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/activity_horizontal_margin">

<!-- layout child -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<!-- Edit button -->
<Button
style="?android:attr/buttonStyleSmall"
android:text="@string/add"
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true" />


</RelativeLayout>

<!-- Text view for main text -->
<TextView
android:id="@+id/brandName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="Item Name"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

我知道我需要一个自定义适配器,到目前为止我有这个但它不工作:

private class FoodAdapter extends ArrayAdapter<Food> {


public FoodAdapter(Context context, List<Food> objects) {
super(context, 0, objects);
}

//inflate view layout_list_item
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView =
getLayoutInflater().inflate(R.layout.search_list_item, parent, false);
}
//link buttons to views within layout_list_item
Button btnAdd = (Button) convertView.findViewById(R.id.btnAdd);
TextView txtMemo = (TextView)
convertView.findViewById(R.id.brandName);
return convertView;

我的模型如下:

public class Food implements Serializable {
//set variables
private Date date;
private String text;
private boolean fullDisplayed;
private static DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyy 'at' hh:mm aaa");
//memo date
public Food() {
this.date = new Date();
}
//create Food
public Food(long time, String text) {
this.date = new Date(time);
this.text = text;
}
//get time
public long getTime() {
return date.getTime();
}
//set text
public void setText(String text) {
this.text = text;
}
//get text
public String getText() {
return this.text;
}

//get shortened version of text for not full displayed
public String getShortText() {
String temp = text.replaceAll("\n", " ");
if (temp.length() > 25) {
return temp.substring(0, 25) + "...";
} else {
return temp;
}
}
//set full displayed
public void setFullDisplayed(boolean fullDisplayed) {
this.fullDisplayed = fullDisplayed;
}
//set flag for if is full displayed
public boolean isFullDisplayed() {
return this.fullDisplayed;
}
//set a toString method for returning text.
@Override
public String toString() {
return this.text;
}
}

最佳答案

您还没有在 TextView 的 getView 中设置数据。您必须从列表中获取该位置的数据,并使用 Food 类的 getText 方法填充到 TextView 中。

将您的适配器代码替换为以下代码:

private class FoodAdapter extends ArrayAdapter<Food> {
private List<Food> mObjects;

public FoodAdapter(Context context, ArrayList<Food> objects) {
super(context, 0, objects);
mObjects = new ArrayList<Food> (objects);
}

//inflate view layout_list_item
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView =
getLayoutInflater().inflate(R.layout.search_list_item, parent, false);
}
//link buttons to views within layout_list_item
Button btnAdd = (Button) convertView.findViewById(R.id.btnAdd);
TextView txtMemo = (TextView)
convertView.findViewById(R.id.brandName);
txtMemo.setText(mObjects.get(position).getText());
return convertView;

注意- 在上面的代码中,我在创建列表时创建了一个 ArrayList。 List 是一个接口(interface),当你创建一个实例时,你必须用一个类来创建它,比如 ArrayList 或 LinkedList。因此,当您调用适配器时,传递的是 ArrayList 而不是 List。

关于android - 将三个 ArrayList 合二为一并在自定义 ListView 中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com