如何设置特定项目中的文本和图像textview和水平列表视图中的imageview



我已经将值从fragment传递到mainactivity,同时单击fragment类中的按钮。我的主要活动有一个片段和一个带基本适配器的水平listview。我的水平listview有一个imageview和一个textview。我想在特定的水平列表项中设置值和图像。如果我必须单击fragment类中的第一个项目加按钮,则value和image需要设置水平listview的第一个项。请在此处建议me.my水平列表视图适配器代码。提前谢谢

public class HorizontalAdapter extends BaseAdapter {
private Context context;
int value = 0;
int a[];
public HorizontalAdapter(Context c, int value) {
    context = c;
    this.value = value;
}
@Override
public int getCount() {
    return 10;
}
@Override
public Object getItem(int position) {
    return position;
}
@Override
public long getItemId(int position) {
    return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)  {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        // convertView = new View(context);
        convertView = inflater.inflate(R.layout.horizantal_image, null);
    }
    TextView textView = (TextView) convertView.findViewById(R.id.title);
    ImageView imageView = (ImageView) convertView.findViewById(R.id.image);
    textView.setText(String.valueOf(value));
    // imageView.setImageResource(image);
    System.out.println(value);
    System.out.println(position);
    System.out.println(convertView);
    System.out.println(parent);
    // textView.setText(dataObjects[position]);
    // imageView.setImageResource(imageid[position]);
    return convertView;
}

}

您必须根据您的要求传递一些对象数组或ArrayList,并更改数组中特定项的值,然后将其传递给适配器。你可以创建一个模型类,在其中你可以定义像这样的文本和图像

 public class ListModel{
        private String imageUrl;
        private String title;
        public String getImageUrl() {
            return imageUrl;
        }
        public void setImageUrl(String imageUrl) {
            this.imageUrl = imageUrl;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
    }

在BaseAdapter中,您必须使用ListModel的ArrayList,如下所示:

ArrayList<ListModel> listData = new ArrayList<ListModel>();

你必须从一些地方设置listData的内容,比如这个

ListModel listModelData = new ListModel();
// Add Content for specific object
listModelData.setTitle("your title");
listModelData.setImageUrl("your image url");

// Add this object in listview 
listData.add(listModelData);

之后,你必须在你的BaseAdapter中传递这个列表,如下所示:

public class HorizontalAdapter extends BaseAdapter {
private Context context;
private  int value = 0;
private ArrayList<ListModel> listData;
public HorizontalAdapter(Context c, int value, ArrayList<ListModel>   listData) {
    context = c;
    this.value = value;
   this.listData= listData;
}
@Override
public int getCount() {
    return listData.size();
}
@Override
public Object getItem(int position) {
    return position;
}
@Override
public long getItemId(int position) {
    return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)  {
    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        // convertView = new View(context);
        convertView = inflater.inflate(R.layout.horizantal_image, null);
    }
    TextView textView = (TextView) convertView.findViewById(R.id.title);
    ImageView imageView = (ImageView) convertView.findViewById(R.id.image);
    textView.setText(String.valueOf(listData.get(position).getImageUrl()));
    // imageView.setImageResource(image);
    System.out.println(String.valueOf(listData.get(position).getTitle()));
    System.out.println(position);
    System.out.println(convertView);
    System.out.println(parent);
    if (listData.get(position).getImageUrl()!=null){
      imageView.setImageResource(listData.get(position).getImageUrl());
    }
    if (listData.get(position).getTitle()!=null){
       textView.setText(listData.get(position).getTitle());
    }

    return convertView;
}
}

要更新ArrayList的具体位置,您必须这样做:

listData.get(0).setImageUrl("Updated Image url");
listData.get(0).setTitle("Updated Title ");

要在列表视图中设置适配器,您必须在活动中执行以下操作:

HorizontalAdapter  mAdapter = new HorizontalAdapter (mCtx, value,listData );
mListViews.setAdapter(mAdapter);

要更新Listview,您必须在更新ArrayList的内容后调用notifyDataSetChanged,如下所示:

if (mAdapter !=null){
mAdapter .notifyDataSetChanged();
}

最新更新