簡體   English   中英

如何在水平listview中的特定項目textview和imageview中設置文本和圖像

[英]how to set the text and image in particular item textview and imageview in horizontal listview

單擊片段類中的按鈕時,我已將值從片段傳遞給mainactivity。 我的主要活動有一個片段和一個帶有基本適配器的水平列表視圖。我的水平列表視圖有一個圖像視圖和一個文本視圖。 我想在特定的水平listitem中設置值和圖像。 如果我必須單擊片段類中的第一項加號按鈕,則值和圖像要設置水平listview的第一項。 請在這里建議我。我的水平listview適配器代碼。 預先感謝。

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM