ListView onClickListner не работает и удалить строку из ListView

list_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="5dp">

<TextView
    android:id="@+id/mytitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="5dip"
    android:layout_marginTop="5dp"
    android:layout_toRightOf="@+id/icon"
    android:background="@drawable/textbox1"
    android:paddingBottom="10dp"
    android:text="Title"
    android:textColor="#CC0033"
    android:textSize="20dp" />

<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="75dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/mytitle"
    android:layout_marginLeft="20dp"
    android:scaleType="fitXY"
    android:paddingLeft="10dp"
    android:paddingRight="10dp" />

<TextView
    android:id="@+id/descri"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/mytitle"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/icon"
    android:layout_marginTop="16dp"
    android:background="@drawable/textbox1"
    android:text="Description"
    android:textColor="#3399FF"
    android:textSize="14dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/mytitle"
    android:layout_toLeftOf="@+id/mytitle"
    android:layout_marginLeft="5dp"
    android:background="@drawable/buttontextview"
    android:text="       Click To Share"
    android:textColor="@android:color/white"
    android:textSize="13sp" />

Это моеRowItem класс

public class RowItem {

       private String imagepath;
       private String title;
       private String desc;
       public boolean isclicked;

public RowItem(String imagepath,String title,String desc) {
    System.out.println("ImagePath is:---"+imagepath);
    this.imagepath = imagepath;
    System.out.println("Title is:---"+title);
    this.title = title;
    System.out.println("Description is:---"+desc);
    this.desc = desc;
    isclicked = false;
}

 public String getImagepath() {
    return imagepath;
}

public boolean isIsclicked() {
return isclicked;
  }

public void setIsclicked(boolean isclicked) {
this.isclicked = isclicked;
}

public void setImagepath(String imagepath) {
    this.imagepath = imagepath;
}


  public String getTitle() {
       return title;
  }
   public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public void setTitle(String title) {
    this.title = title;
        }
    @Override
   public String toString() {
         return title + "\n" + desc;
    }
 }

Это моеonCreate() Метод из Деятельности

      {  int k = 0;
    if(i>0){
    rowItems = new ArrayList<RowItem>();
     for (int j = 0;j<i ; j++) {
         System.out.println("Loop Value:--"+j);
         System.out.println("Location Details:-----"+location.get(j));
         System.out.println("Description Details:------"+description.get(j));
         System.out.println("Image Details:------"+images.get(j));

            RowItem item = new RowItem(images.get(j),location.get(j),description.get(j));
            rowItems.add(item);
        }
        listView = (ListView) findViewById(R.id.list);
        adapter = new CustomListViewAdapter(PicActivity.this, rowItems);

        listView.setAdapter(adapter);           
          listView.setOnItemClickListener(this);
   }

Это мой списокonClicklistner метод

    @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    System.out.println("My List Item Clicked");
    mylistid = position;
    Button deleteBtn = (Button) findViewById(R.id.delete);
    deleteBtn.setOnClickListener(this);
    File myimagefile = new File(images.get(position));

    lastlistid = mydb.getlastlistid();
    int list = Integer.valueOf(lastlistid.get(0));
    listno=0 ;
    listno = list-position;
      SharedPreferences mylistpref = getSharedPreferences(Constants.listiddetails, 0);
    Editor edit= mylistpref.edit();
    edit.putInt("listid", listno);
    edit.commit();

    System.out.println("First Position Value:-"+position);
         Toast toast = Toast.makeText(getApplicationContext(),
            "Title " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();

        Intent intermediate = new Intent (PicActivity.this,InterMediateActivity.class);
        intermediate.putExtra("savenshare", "notshare");
        intermediate.putExtra("flag", "false");
        startActivity(intermediate);
        finish();
    }

Checkbox идет в списке, ноonItemclicklistner не работает.

Моя кнопка удаленияonClicklistner это так

     case R.id.delete:
 System.out.println("My List item:-"+mylistid);
         ((CustomListViewAdapter)listView.getAdapter()).notifyDataSetChanged();
 break;

Здесь mylistid - глобальное целое число, которое я устанавливаю в то время как на listitemonclick.

Почему мой элемент списка onclicklistner не работает, если я добавляю флажок в моем списке, а также как я могу удалить строку и обновить элемент списка. Я следовал многим учебникам, но не смог реализовать.

Пожалуйста помоги !!!!

ОБНОВИТЬ

Это мой класс customListViewAdapter

 public class CustomListViewAdapter extends BaseAdapter   {
private  List<RowItem> arr = new ArrayList<RowItem>();

ArrayList<Integer> checks=new ArrayList<Integer>();
private Context context;
Bitmap mybitmap;
private Activity activity;

ViewHolder holder = null;

int mypos=0;
File f;
RowItem rowItem;

public CustomListViewAdapter(Context context,List<RowItem> items) {
    //super();
    this.arr = items;
    this.context=context;
}

private class ViewHolder {
    //ImageView imageView;
    TextView txtTitle;
    TextView txtDesc;
    ImageView image;
  //  CheckBox mychk;

}

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

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    //mypos=arg0;
    return arr.get(arg0);

}

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

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



rowItem = (RowItem) getItem(position);

    f = new File(rowItem.getImagepath());

System.out.println("My list item Position from GetView:--"+position);



LayoutInflater mInflater = (LayoutInflater) context
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

if (convertView == null) {
    convertView = mInflater.inflate(R.layout.list_item, null);
    holder = new ViewHolder();

    holder.txtDesc = (TextView) convertView.findViewById(R.id.descri);

    holder.txtTitle = (TextView) convertView.findViewById(R.id.mytitle);

 //   holder.mychk = (CheckBox) convertView.findViewById(R.id.checkBox1);

    holder.image = (ImageView) convertView.findViewById(R.id.icon);

 //   holder.mychk.setOnCheckedChangeListener(this);

//    holder.mychk.setTag(arr.get(position));

  //  holder.mychk.setChecked(false);

    convertView.setTag(holder);
} else
    holder = (ViewHolder) convertView.getTag();

// holder.mychk.setOnCheckedChangeListener (this);

System.out.println("My Description is:--"+holder.txtDesc.getText());
System.out.println("My Title is:--"+holder.txtTitle.getText());

holder.txtDesc.setText("  "+rowItem.getDesc());

holder.txtTitle.setText("  "+rowItem.getTitle());
if(f.exists())
{
    mybitmap = BitmapFactory.decodeFile(f.getAbsolutePath());
    Bitmap myeditedbitmap = Bitmap.createScaledBitmap(mybitmap, 180, 150, false);

holder.image.setImageBitmap(myeditedbitmap);

//holder.mychk.setChecked(true);
//setImageResource(rowItem.getImagepath());
}
//holder.txtTitle.setText(rowItem.getTitle());

/* for(int i=0;i<ArrayId.size();i++)
{
  rowItem.remove(ArrayId[i]);
}
*/
return convertView;
    }



}







}

ОБНОВЛЕНИЕ 2

Я обновил свой ListItem xml до некоторого кода, и теперь onItemClick работает ..

андроид: descendantFocusability = "blocksDescendants"

Теперь другая часть ... удаленный элемент строки ... который все еще не работает. А также, если я выбираю один флажок, другие также выбираются. Например, если я выбираю 1.. Потом 3..5..7 становится выбранным. .. Как этого избежать ??

Мой код строки deleteItem ..

    deleteBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                SparseBooleanArray checkedItemPositions =   listView.getCheckedItemPositions();
                 int itemCount = listView.getCount();

                 for(int i=itemCount-1; i >= 0; i--){
                     if(checkedItemPositions.get(i)){
                //         adapter.remove(rowItems.get(i));  This line is giving me error.first i want to delete row temp and give a toast message.then i will update the database later.but as i am using customarrayadapter class.so i dont have the method remove.Can someone help me regarding the remove method ?


                     }
                 }
                 checkedItemPositions.clear();
                 adapter.notifyDataSetChanged();
            }

        });

ОБНОВЛЕНИЕ 3

       case R.id.delete:

      SharedPreferences del = getSharedPreferences(Constants.checkedid,0);
        int checkmyid = 0;
        checkmyid = del.getInt("check", 0);

        int mycount = listView.getCount();

        System.out.println("My List item COUNT FROM DELETE METHOD:-"+mycount);  


                System.out.println("My List item FROM DELETE METHOD:-"+checkmyid);  

                rowItems.remove(checkmyid);
                 mydb.delete(checkmyid);




            ((CustomListViewAdapter)listView.getAdapter()).notifyDataSetChanged();
            break;

и мой метод удаления из базы данных

public void delete(int id){
    String sql = "delete from picdetails where id="+id;
    Cursor mych;
    mych = myDataBase.rawQuery(sql, null);
}

Но когда я снова открываю базу данных, данные снова показываются. Как этого избежать? Также, когда я выбираю один флажок для удаления, этот конкретный флажок не удаляется. Нижний ряд удаляется.

ОБНОВЛЕНИЕ 4

я обновил код кнопки удаления .. теперь элемент строки удаляется .. но для первого выбора он не удален. он удаляется снизу. но контрольная точка идеальна

      SharedPreferences del = getSharedPreferences(Constants.checkedid,0);
       int checkmyid = 0;
       checkmyid = del.getInt("check", 0);

       int mycount = listView.getCount();

          System.out.println("My List item COUNT FROM DELETE METHOD:-"+mycount);

       SparseBooleanArray checked = listView.getCheckedItemPositions();

     System.out.println("*****My SELECTED List item FROM DELETE METHOD:-*****"+checkmyid);




        rowItems.remove(checkmyid);

Ответы на вопрос(2)

Ваш ответ на вопрос