setOnItemClickListener在spinner或listview中不起作用(由于每行中使用了galleryadapter for galleryview)

时间:2015-12-17 07:08:07

标签: android listview spinner

我知道这是一个老问题,我知道它有一些答案,但没有答案对我不起作用。我在我的主适配器(扩展arrayAdapter)中使用了imageAdapter(扩展baseAdapter)我的工作结果是:

enter image description here

在添加图像适配器之前,每件事都很好。但是setOnItemClickListener现在不起作用。我认为我的问题与自动关注图库视图有关,因为当我删除它时,setonitemselectedlistener正常工作。我在XML或程序上尝试了一些答案,如set focusable =“false”或focusableInTouchMode =“false”。我的每行XML文件是(不完整):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="130dp"
    android:paddingBottom="10dp">
    //...
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Account name : "
        android:id="@+id/textView87"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:focusable="false"/>

    <Gallery
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:id="@+id/gallery5"
        android:layout_toRightOf="@+id/textView88"
        android:layout_alignBottom="@+id/textView88"
        android:focusable="false"
        android:focusableInTouchMode="false"
         />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Persons : "
        android:id="@+id/textView88"
        android:layout_below="@+id/textView7"
        android:layout_alignLeft="@+id/textView7"
        android:layout_alignStart="@+id/textView7"
        android:layout_marginTop="20dp"
        android:focusable="false"/>
</RelativeLayout>

我的微调器设置事件是:

 spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                reseter();
                acn = ((TextView) view.findViewById(R.id.textView6)).getText().toString();
                persons = ((TextView) view.findViewById(R.id.textView10)).getText().toString();
                Toast.makeText(getBaseContext(), "acc name selected: " + acn, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

谢谢你的回答,对不好的英语抱歉。

编辑:我的图片适配器是:

public class ImageAdap extends BaseAdapter {
    String[] imageIDs;
    private Context context;
    private Activity activity;
    private int itemBackground;
    public ImageAdap(Context c,Activity ac,String[] imgstring)
    {
        activity=ac;
        context = c;
        imageIDs=imgstring;
        TypedArray a = ac.obtainStyledAttributes(R.styleable.MyGallery);
        a.recycle();

    }

    public int getCount() {
        return imageIDs.length;
    }
    public Object getItem(int position) {
        return position;
    }
    public long getItemId(int position) {
        return position;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(context);

//set different image from different location
        if (imageIDs[position] != null) {
            if(imageIDs[position].contains("pic") ){
                String st="R.drawable." + imageIDs[position];
                int resID = activity.getResources().getIdentifier(imageIDs[position], "drawable", activity.getPackageName());
                imageView.setImageResource(resID);
            }
            if( imageIDs[position].contains("contactic")){
                imageView.setImageResource(R.drawable.contactic);
            }
            if(imageIDs[position].contains("piture")) {
                File imgFile = new File(Environment.getExternalStorageDirectory().getPath() + "/Dongopick/" + imageIDs[position]);
                if (imgFile.exists()) {
                    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                    imageView.setImageBitmap(myBitmap);
                }
            }
            if(imageIDs[position].contains("content")){
                imageView.setImageURI(Uri.parse(imageIDs[position]));
            }
        }    
//set parameter of gallery
            imageView.setLayoutParams(new Gallery.LayoutParams(70, 70));
            imageView.setBackgroundResource(itemBackground);
            imageView.setPadding(10, 0, 10, 0);



        return imageView;
    }
}

我的主适配器是:

public class Accountadapter extends ArrayAdapter<String> {
    private final Activity activity;
    private final String[] acname;
    private final String[] acpic;    
    private final String[] acid;
    private final String[] acpersons;
    private final String[] acstatus;
    public Accountadapter(Activity activity, String[] mname, String[] mpic, String[] mid, String[] mpersons, String[] mstatus) {
        super(activity, R.layout.accountrow, mid);
        // TODO Auto-generated constructor stub
        this.activity = activity;
        this.acname = mname;
        this.acpic = mpic;
        this.acid = mid;
        this.acpersons = mpersons;
        this.acstatus=mstatus;
    }
    @Override
    public View getDropDownView(int position, View convertView,ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }
    public View getCustomView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = activity.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.accountrow, parent, false);
        TextView txtname = (TextView) rowView.findViewById(R.id.textView6);
        TextView txtpicname = (TextView) rowView.findViewById(R.id.textView9);
        TextView txtid = (TextView) rowView.findViewById(R.id.textView8);
        TextView txtpersons = (TextView) rowView.findViewById(R.id.textView10);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView5);
        ImageView ivs = (ImageView) rowView.findViewById(R.id.imageView9);
        final Gallery gallery = (Gallery)rowView.findViewById(R.id.gallery5);

        gallery.setEnabled(false);
        gallery.setFocusable(false);
        gallery.setClickable(false);
        gallery.setFocusableInTouchMode(false);
        gallery.setSelected(false);
       // gallery.setTouchscreenBlocksFocus(false);


        Hesabketab hesab=new Hesabketab();
        String[] personid= new String[ hesab.persondivider(acpersons[position]).length];
        personid=hesab.persondivider(acpersons[position]);
        DBadapter mdb=new DBadapter(getContext());
        mdb.open();
        ArrayList<String> ar1=new ArrayList<String>();
        for(int i=0;i<personid.length;i++){
            ar1.add( mdb.fetchDbById(Integer.parseInt(personid[i])).getPicname());
        }
        String[] personpic=(String[]) ar1.toArray(new String[ar1.size()]);
        gallery.setAdapter(new ImageAdap(getContext(), activity, personpic));
        mdb.close();

        gallery.setEnabled(false);
        gallery.setFocusable(false);
        gallery.setClickable(false);
        gallery.setFocusableInTouchMode(false);
        gallery.setSelected(false);
       // gallery.setTouchscreenBlocksFocus(false);


        imageView.setImageResource(R.drawable.contactic);
        if (acname[position] != null) {
            txtname.setText(acname[position]);
        }
        if (acpersons[position] != null) {
            txtpersons.setText(acpersons[position]);
        }
        if (acid[position] != null) {
            txtid.setText(acid[position]);
        }
        if (acpic[position] != null) {
            txtpicname.setText(acpic[position]);
        }
        if (acstatus[position] .equals("open")) {
            ivs.setImageResource(R.drawable.green);
        }else{
            ivs.setImageResource(R.drawable.red);
        }
        if (acpic[position] != null) {
            //here is for string parser
            if(acpic[position].indexOf("pic")>=0 ){
                String st="R.drawable." + acpic[position];
                int resID = activity.getResources().getIdentifier(acpic[position],"drawable", activity.getPackageName());
                imageView.setImageResource(resID);
            }
            if( acpic[position].indexOf("contactic")>=0){
                imageView.setImageResource(R.drawable.contactic);
            }
            if(acpic[position].indexOf("piture")>=0) {
                File imgFile = new File(Environment.getExternalStorageDirectory().getPath() + "/Dongopick/" + acpic[position]);
                if (imgFile.exists()) {
                    Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                    imageView.setImageBitmap(myBitmap);
                }
            }
            if(acpic[position].indexOf("content")>=0){
                imageView.setImageURI(Uri.parse(acpic[position]));
            }
        }
        return rowView;
    }
}

0 个答案:

没有答案