Android LazyList установил проблему изображения - PullRequest
0 голосов
/ 11 октября 2011

На самом деле, то, что я хочу спросить здесь, больше похоже на получение некоторых предложений, которые являются лучшим способом сделать то, что я хочу.Я использую Lazy Loading List в своем приложении.Мне нужно иметь возможность установить другое изображение для элемента списка, в зависимости от того, подписан ли пользователь на это изображение или нет.Если он не, он показывает изображение по умолчанию.Если он есть, то реальный образ.Вот код, который я использую:

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class LazyAdapter extends BaseAdapter {


    private Activity activity;
    private String[] data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, String[] d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder{
        public TextView name,info;
        public ImageView image;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null){
            vi = inflater.inflate(R.layout.item, null);
            holder=new ViewHolder();
            holder.name=(TextView)vi.findViewById(R.id.name);
            holder.info=(TextView)vi.findViewById(R.id.info);
            holder.image=(ImageView)vi.findViewById(R.id.image);
            vi.setTag(holder);
            Log.v("",""+position);
        }
        else
            holder=(ViewHolder)vi.getTag();

        holder.name.setText("");
        holder.info.setText("");
        holder.image.setTag(data[position]);
        imageLoader.DisplayImage(data[position], activity, holder.image);
        return vi;
    }
}

Поэтому я хочу установить другой текст в поле имени, информационное поле и другое изображение в зависимости от того, подписан пользователь или нет.Тексты, которые я получаю из базы данных Sqlite.Любые идеи или предложения, которые являются лучшим способом сделать это?

Я буду очень признателен за любую помощь! Спасибо!

Ответы [ 2 ]

2 голосов
/ 11 октября 2011
if (userIsSubscribed) {
    holder.name.setText("subscribedUserName");
    holder.info.setText("subscribedUserInfo");
    holder.image.setImageResource(drawable.userSubscribedImage);
} else {
    holder.name.setText("unsubscribedUserName");
    holder.info.setText("unsubscribedUserInfo");
    holder.image.setImageResource(drawable.userUnSubscribedImage);
}
1 голос
/ 11 октября 2011

Итак, у вас есть данные в вашей переменной «data»

используйте ваши данные в вашем методе getView, как вы делаете с вашим Image

    holder.name.setText(data[position].getName());
    holder.info.setText(data[position].getInfo());
    holder.image.setTag(data[position]);
    imageLoader.DisplayImage(data[position], activity, holder.image);
...