2017-08-07 2 views
0

ListView ne montre aucun effet quand je tape une rangée dans ListView je veux montrer un effet ou une couleur etc comme dans iOS lorsque nous sélectionnons ou tapons sur une rangée de J'utilise la vue personnalisée et un adaptateur personnalisé pour ListView et infalting une vue personnaliséeListView dans android ne met pas en surbrillance la ligne que je sélectionne

ici, je suis en train de créer un adaptateur personnalisé avec vue personnalisée

CustomContactsHomeAdapter customContactsAdapter = new CustomContactsHomeAdapter(HomeView.this, R.layout.custom_contact_cell, userBean_home_Search.getData(), 
listView.setAdapter(customContactsAdapter); 

et ceci est mon adaptateur personnalisé

public class CustomContactsHomeAdapter extends ArrayAdapter<UserBean_Home.DataBean> { 

    public UserBean_Home userBean; 
    Context mContext; 

    public CustomContactsHomeAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    } 

    public CustomContactsHomeAdapter(Context context, int resource, List<UserBean_Home.DataBean> need, UserBean_Home abc) { 
     super(context, resource , need); 
     this.mContext = context; 
     this.userBean = abc; 
    } 

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

     if(convertView==null) { 
      LayoutInflater vi; 
      vi = LayoutInflater.from(mContext); 
      convertView = vi.inflate(R.layout.custom_contact_cell, null); 

      TextView contactName = (TextView) convertView.findViewById(R.id.contactName); 
      TextView contactDesc = (TextView) convertView.findViewById(R.id.contactAddress); 
      ImageView profileImage = (ImageView) convertView.findViewById(R.id.profileImage); 

      UserBean_Home.DataBean dataBean = userBean.getData().get(position); 

      if(dataBean.getR_type().equalsIgnoreCase("1")) { 
       contactName.setText(dataBean.getFull_name()); 
       contactDesc.setText("@"+dataBean.getUser_name()); 
       Picasso.with(mContext) 
         .load(GlobalBean.IMAGES_URL+dataBean.getImage()) 
         .placeholder(R.drawable.noimage) 
         .into(profileImage); 
      } else { 

       contactName.setText(dataBean.getGroup_title()); 
       contactDesc.setText("@"+dataBean.getGroup_description()); 
       Picasso.with(mContext) 
         .load(GlobalBean.IMAGES_URL+dataBean.getGroup_cover_image()) 
         .placeholder(R.drawable.noimage) 
         .into(profileImage); 
      } 
//   if(dataBean.getUnread_messages().equalsIgnoreCase("0") == false) { 
//    TextView undreadMessages = (TextView) convertView.findViewById(R.id.undreadMessages); 
//    undreadMessages.setVisibility(View.VISIBLE); 
//    undreadMessages.setText(dataBean.getUnread_messages()); 
//   } 
    } 
     return convertView; 
    } 

    @Override 
    public int getViewTypeCount() { 
     return getCount(); 
    } 
    @Override 
    public int getItemViewType(int position) { 
     return 
    } 

ce qui est ListView en XML

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/listView" 
    android:layout_below="@id/L1 /> 

quelqu'un ?? s'il vous plaît

+0

vous voulez mettre en évidence la vue d'élément lorsqu'il est sélectionné ou seul élément de l'élément de sélection? –

Répondre

0

il suffit d'utiliser

listview.setOnItemClickListener

après avoir réglé l'adaptateur comme ci-dessous

listview.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
     { 
      Toast.makeText(yourActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
      arg1.setBackgroundColor(Color.GREEN); 
     } 
    }); 
+0

Comment cela met-il en surbrillance la ligne sélectionnée? –

+0

J'ai édité ma réponse et ajouté cette ligne de code arg1.setBackgroundColor (Color.GREEN); –

+0

Et que se passe-t-il lorsqu'un autre élément est sélectionné? Comment va-t-il obtenir sa couleur d'origine? Et comment cela devrait-il fonctionner quand un élément est sélectionné avec une pression sur un clavier? –

1

Qu'est-ce que vous avez besoin ici est un sélecteur pour appliquer aux ListView articles. Voici un exemple:

Sélecteur mySelector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/unpressed" /> 

</selector> 

exemple d'objet:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/ftaccountrow" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/mySelector" > 

    ..... 

</RelativeLayout>