Подтвердить что ты не робот

Android отключить элементы списка

В принципе, мне нужна небольшая помощь или некоторые предложения с проблемой, которые у меня есть. Я заполняю свой список из базы данных, и мне нужно проверить, когда я создаю свой список, если идентификатор элемента на position совпадает с идентификатором из другой таблицы в моей базе данных. Если это так, вы можете щелкнуть этот элемент, если не хотите его отключить, но всю информацию, которую я нашел о том, как это сделать. Я не могу понять, как это сделать.

import java.util.ArrayList;


import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
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;

//For more information look at the bottom of file.

public class LazyAdapter extends BaseAdapter {


    private Activity activity;
    private String[] data;
    private ArrayList<String> name;
    private ArrayList<String> info;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader;
    private Bitmap b;

    public LazyAdapter(Activity a, Bitmap d, ArrayList<String> names, ArrayList<String> information) {
        activity = a;
        b=d;
        name=names;
        info = information;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return name.size();
    }

    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","Position : "+position);
        }
        else
            holder=(ViewHolder)vi.getTag();
            holder.name.setText(name.get(position));
            holder.info.setText(info.get(info.size()-1));

            //Here I must do a black magic and get the images if user had 'em.

            holder.image.setImageBitmap(b);

            //holder.image.setTag(data[position]);
            //imageLoader.DisplayImage(data[position], activity, holder.image);

            // Black magic over.
        return vi;
    }
}

Любые идеи или предложения, как это сделать?

4b9b3361

Ответ 1

В адаптере существует имя метода isEnabled, которое вы можете переопределить. Это называется для каждой строки, такой как getview. Onclicklistener будет работать только в том случае, если эта функция вернет true. Поэтому попробуйте сделать это в своем адаптере customm.

@Override
public boolean isEnabled(int position) {
    if(YOUR CONDTITION){
        return false;
    }
    return true;
}

Ответ 2

Когда вы передаете список объектов в BaseAdpater, добавьте поле в этот объект списка с именем isEnabled и установите его в true/false по мере необходимости, а затем переопределите isEnabled метод BaseAdapter, как этот

@Override
public boolean isEnabled(int position) {

    return info.get(position).isEnabled;
}

где информация - это ваш список объектов

Ответ 3

Например, если вы хотите отключить позиции от 0 до 5

@Override
public boolean isEnabled(int position){
    if(position >= 0 && position < 6)
        return false;
    else
        return true;
}

@Override
public boolean areAllItemsEnabled(){
    return true;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

          //CODE OF ADAPTER
}

Ответ 4

Не уверен, что вы там делаете, но то, что вы хотите сделать, это определить свой класс, как обычно, путем расширения Activity (или ListActivity). Затем сделайте свой адаптер классом вложенным классом в классе Activity, расширив BaseAdapter.

Как только вы это сделаете, вы напишите свой метод getView() в своем классе адаптера. Назначьте OnClickListener для просмотра там в зависимости от условия, о котором вы упомянули.

Ответ 5

В адаптере добавьте это.

if ((position)!="your item"){
    view.setEnabled(true);
    view.setClickable(true);
} else{
    view.setEnabled(false);
    view.setClickable(false);
}

`