作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试发送这个 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/
我是一名优秀的程序员,十分优秀!