自定义ListView项目行无法点击

时间:2015-04-22 14:47:30

标签: android android-listview

这是listview的活动。但是listview的行是不可点击的。我在自定义列表视图上写了onItemClickListener,但它没有工作。请帮助

这是change.class

public class change extends Activity {
private ListView actlist;
private String database_name,table_name;
private  String DB_Path;
private  ArrayList<String>Steps,Audio_path;
private ArrayList<Bitmap>Image_path;
private SQLiteDatabase db;
private Cursor c;
private int count;
private CustomListAdapter customListAdapter;
private Bitmap bitmap;
private File f1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.change);
    actlist=(ListView)findViewById(R.id.actlist);
    table_name=getIntent().getStringExtra("Value");
    database_name=getIntent().getStringExtra("Head");
    Steps=new ArrayList<String>();

    Image_path=new ArrayList<Bitmap>();
    Audio_path=new ArrayList<String>();

    //Steps.clear();
//  Image_path.clear();
    //Audio_path.clear();




    if(database_name.equals("Kitchen"))
    {
        DB_Path="/mnt/sdcard/Kitchen_Data.db";
        Steps=new ArrayList<String>();
        db=SQLiteDatabase.openDatabase(DB_Path, null,SQLiteDatabase.OPEN_READWRITE);
         c=db.query(table_name, null, null, null, null, null, null);
         c.moveToFirst();
         count = c.getCount();
            for(int i=1;i<=count;i++)
             {
                  Steps.add(c.getString(1));
                  Image_path.add(ImgBitmap(c.getString(2)));
                 Audio_path.add(c.getString(3));
                    if(c.isAfterLast()==false)
                    {
                            c.moveToNext();
                    }
             }

    }
else
    {
        DB_Path="/mnt/sdcard/Washroom_Data.db";

        db=SQLiteDatabase.openDatabase(DB_Path, null,SQLiteDatabase.OPEN_READWRITE);
         c=db.query(table_name, null, null, null, null, null, null);
         c.moveToFirst();
         count = c.getCount();
            for(int i=1;i<=count;i++)
             {
                  Steps.add(c.getString(1));
                 Bitmap b2=(ImgBitmap(c.getString(2)));
                 Image_path.add(b2);
                 Audio_path.add(c.getString(3));
                    if(c.isAfterLast()==false)
                    {
                            c.moveToNext();
                    }
             }


    }
    customListAdapter = new CustomListAdapter(this, Steps,Image_path,Audio_path);
    actlist.setAdapter(customListAdapter);
    actlist.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "u clicked", Toast.LENGTH_LONG).show();
        }
    });
}


private   Bitmap ImgBitmap(String filename)
{
    f1=new File(filename);
    if(f1.exists())
    {

        BitmapFactory.Options options=new BitmapFactory.Options();
        options.inSampleSize=8;
         bitmap=BitmapFactory.decodeFile(f1.getAbsolutePath(), options);
        return bitmap;
    }
    return null;
}
}

这是CustomListAdapter.class

public class CustomListAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<String> data;
private ArrayList<Bitmap> image_bit;
private  ArrayList<String> audio_bit;
private MediaPlayer player;

private static LayoutInflater layoutInflater;

public CustomListAdapter(Activity acivity, ArrayList<String> data,ArrayList<Bitmap>image_bit,ArrayList<String>audio) {
    // TODO Auto-generated constructor stub
    this.activity = acivity;
    this.data = data;
    this.image_bit=image_bit;
    this.audio_bit=audio;
    layoutInflater = (LayoutInflater) acivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return data.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

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

    ListCell listCell;
    if(convertView == null)
    {
        convertView = layoutInflater.inflate(R.layout.listact_kitchen, null);
        listCell = new ListCell();
        listCell.tvStep = (TextView) convertView.findViewById(R.id.tvStep);
        listCell.list_image=(ImageView)convertView.findViewById(R.id.list_image);
        listCell.imageButton1=(ImageButton)convertView.findViewById(R.id.imageButton1);
        listCell.imageButton1.setTag(position);
        convertView.setTag(listCell);
    }
    else
    {
        listCell = (ListCell) convertView.getTag();
    }

    try
    {
        listCell.tvStep.setText(data.get(position));
        listCell.list_image.setImageBitmap(image_bit.get(position));
        listCell.imageButton1.setOnClickListener(new OnClickListener() {


            public void onClick(View v) {
                // TODO Auto-generated method stub
                player=new MediaPlayer();
                     try {
                        player.setDataSource(audio_bit.get(position));
                        player.prepare();
                        player.start();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 


            }
        });


    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    // TODO Auto-generated method stub
    return convertView;
}

private class ListCell
{
    TextView tvStep;
    ImageView list_image;
    ImageButton imageButton1;
}
}

这是listview中每个自定义行的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/list_image"
    android:layout_width="150sp"
    android:layout_height="110dp"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/tvStep"
    android:layout_width="match_parent"
    android:layout_height="54dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/list_image"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageButton
    android:id="@+id/imageButton1"``
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/list_image"
    android:layout_alignParentRight="true"
    android:src="@android:drawable/ic_media_play" />

0 个答案:

没有答案