2013-05-14 1 views
6

В этом ListView не кликается, я хочу выполнить действие над кликом элемента, но я не знаю, почему это не можно щелкнуть, я также проверил, что в отладке контроллер не ушел в itemclicklistener ,Элемент ListView не доступен для Android в Android

Дизайн файла:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<CheckBox 
    android:id="@+id/cbSolved" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="15dp" 
    android:layout_marginTop="20dp" 
    android:text="Show Solved" /> 

<CheckBox 
    android:id="@+id/cbMyCases" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/cbSolved" 
    android:layout_alignBottom="@+id/cbSolved" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="46dp" 
    android:text="My Cases" /> 

<EditText 
    android:id="@+id/etCaseSeacrh" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/cbSolved" 
    android:layout_marginLeft="28dp" 
    android:ems="10" 
    android:hint="Search" > 
</EditText> 

<ListView 
    android:id="@+id/liCases" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/btnNewCase" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/etCaseSeacrh" 
    android:layout_marginTop="23dp" 
    android:clickable="true" > 
</ListView> 

<Button 
    android:id="@+id/btnNewCase" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:text="New Case" /> 

</RelativeLayout> 

Это мой Java класс в этом я список доступа, но не кликабельны

public class ShowCases extends Activity{ 
    ListView listshowcase; 
EditText search; 
    ListViewAdapter adapter; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.screen4); 

    listshowcase = (ListView) findViewById(R.id.liCases); 
    adapter = new ListViewAdapter(this); 
     listshowcase.setAdapter(adapter); 
    listshowcase.setClickable(true); 
    listshowcase.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 
      String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); 
      String cost = ((TextView) view.findViewById(R.id.email)).getText().toString(); 
      String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString(); 
      String id = ((TextView) view.findViewById(R.id.id)).getText().toString(); 
      // Starting new intent 
      Intent in = new Intent(getApplicationContext(), CompanyDetail.class); 
      in.putExtra("name", name); 
      in.putExtra("email", cost); 
      in.putExtra("ff", description); 
      in.putExtra("fff", id); 
      startActivity(in); 
     } 
    }); 


    search=(EditText)findViewById(R.id.etCaseSeacrh); 

    search.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // Call back the Adapter with current character to Filter 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count,int after) { 
     } 

       @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
    } 

и это GetView обычая Listadapter класса

@Override 
    public View getView(final int paramInt, View paramView, 
     final ViewGroup paramViewGroup) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflator = activity.getLayoutInflater(); 
     if (paramView == null) { 
     view = new ViewHolder(); 
     paramView = inflator.inflate(R.layout.list_item, null); 

     view.name = (TextView) paramView.findViewById(R.id.name); 
     view.email = (TextView) paramView.findViewById(R.id.email); 
     view.mobile = (TextView) paramView.findViewById(R.id.mobile); 
     view.id = (TextView) paramView.findViewById(R.id.id); 
     paramView.setTag(view); 

     } else { 
     view = (ViewHolder) paramView.getTag(); 
     } 

    view.name.setText(TAG_NAME.get(paramInt)); 
    view.email.setText(TAG_EMAIL.get(paramInt)); 
    view.mobile.setText(TAG_PHONE_MOBILE.get(paramInt)); 
    view.id.setText(TAG_ID.get(paramInt)); 
    /*view.name.setFocusableInTouchMode(false); 
    view.name.setFocusable(false);*/ 
    /*view.setOnClickListener(myClickListener);*/ 
    view.name.setFocusable(false); 
    view.email.setFocusable(false); 
    view.mobile.setFocusable(false); 
    view.id.setFocusable(false); 

    return paramView; 
} 
+0

удалить все setFocusable –

+0

использовать это, не работает – Android

+0

Возможный дубликат элементов [ListView не доступен для кликов. почему?] (http://stackoverflow.com/questions/8955270/listview-items-are-not-clickable-why) – rds

ответ

31

Хорошо, у вас есть кнопка. В вашем list_item xml введите android:descendantFocusability="blocksDescendants" в LinearLayout или RelativeLayout, которые у вас есть.

+0

wow его работа, ay i knw какая функциональность этого ? – Android

+0

Я принимаю ваш ответ, пожалуйста, я хочу использовать эту функцию, пожалуйста, скажите, может ли u – Android

+1

Эта ссылка http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several -cickable-areas/имеет много полезной информации. Я не смог бы объяснить, а также то, что объяснено в ссылке. –

0

Вы можете отображать список? Если да, то покажите, что layout файл, содержащий TextView, чтобы отобразить элемент в списке.

Попробуйте удалить isTextSelectable из этого TextView в этом случае.

Проверьте, есть ли какой-то нелепая ошибка, как я сделал несколько месяцев назад здесь:

onItemClick in ListView doesn't work

+0

используйте это, не работая – Android

0

просто удалить

listshowcase.setClickable(true); 

этой линии от ShowCases. И затем повторите попытку.

Надеюсь, это поможет вам. Если нет, пожалуйста, дайте мне знать.

+0

используйте это, не работая – Android

0

добавить OnClickListener к каждому из ваших просмотров, возвращенных с вашего адаптера.