0

BaseAdapter を拡張するアダプターでリストビューを使用しています。リストビューの各行には複数のビューがあり、変数の値が「はい」の場合は行の画像が表示され、値が「いいえ」の場合は表示されなくなります。

しかし、私は成功しませんでした。

可視性を変更すると強制的に閉じられます

これは私のコードです。どんな助けも大歓迎です。

感謝と敬意

public class Adapter_c extends BaseAdapter {
...
public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        View vi=convertView;

        if(convertView==null)
            vi = inflater.inflate(R.layout.row_concursos, null);
        holder = new ViewHolder();
        holder.title = (TextView)vi.findViewById(R.id.title_c);
        holder.image = (ImageView)vi.findViewById(R.id.image_c);
        holder.button = (Button)vi.findViewById(R.id.button_c);



        HashMap<String, String> items = new HashMap<String, String>();
        items = data.get(position);

        try { 
            String imageV = new String(items.get(FIRST_activity.KEY_STATE).getBytes("ISO-8859-1"));
            if (imageV.equals("active")){

                holder.image.setVisibility(View.VISIBLE);
            } else{

                holder.image.setVisibility(View.GONE);
            }

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();}
...
4

3 に答える 3

0

この一連のコードを変更します:

if(convertView==null)
        vi = inflater.inflate(R.layout.row_concursos, null);
    holder = new ViewHolder();
    holder.title = (TextView)vi.findViewById(R.id.title_c);
    holder.image = (ImageView)vi.findViewById(R.id.image_c);
    holder.button = (Button)vi.findViewById(R.id.button_c);

このような :

if(convertView==null)
{
    vi = inflater.inflate(R.layout.row_concursos, null);
    holder = new ViewHolder();
    holder.title = (TextView)vi.findViewById(R.id.title_c);
    holder.image = (ImageView)vi.findViewById(R.id.image_c);
    holder.button = (Button)vi.findViewById(R.id.button_c);        

    vi .setTag(holder);
}
else
    holder = (ViewHolder) vi.getTag();
于 2013-08-14T09:46:51.303 に答える
0

これを試して

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;


    if(convertView==null)
    {
    convertView= inflater.inflate(R.layout.row_concursos, parent,false);
    holder = new ViewHolder();
    holder.title = (TextView)convertView.findViewById(R.id.title_c);
    holder.image = (ImageView)convertView.findViewById(R.id.image_c);
    holder.button = (Button)convertView.findViewById(R.id.button_c);
    convertView.setTag(holder);
    }
    else{
     holder=(ViewHolder)convertView.getTag();
     }
     ....some code....
       try { 
          String imageV = new String(items.get(FIRST_activity.KEY_STATE).getBytes("ISO-8859-1"));
          if(imageV.equals("active")){

             holder.image.setVisibility(View.VISIBLE);
           } else{

              holder.image.setVisibility(View.GONE);
           }

         } catch (UnsupportedEncodingException e) {
           e.printStackTrace();
          }
      return converView;
    }
于 2013-08-14T10:04:38.750 に答える
0

ViewHolder なしで結果を取得してみてください。

(ImageView)vi.findViewById(R.id.image_c).setVisibility(View.GONE);
于 2013-08-14T09:44:21.947 に答える