눌렀을 때 gridview에서 항목을 강조 표시하려고합니다. StackOverflow에서 비슷한 질문을 보았습니다. 그러나 그 중 아무 것도 내 앱 (디자인 상상력 또는 최소 API로 인해)에 대해 가능한 방식으로 원하는 것을 수행 할 수 없습니다.gridview에서 항목 강조 표시
최소 API는 9이므로 Multi_choice_listener를 사용할 수 없습니다.
지금 당장 나는 원하는 색상으로 배경을 설정할 수 있지만, 한 요소를 누르면 화면의 동일한 위치에있는 다른 요소를 누르게됩니다 (gridview를 스크롤 한 후).
예를 들어,이 화면 상상 : 내가 B를 누른 후 나는 화면을 스크롤하면
ABC 을 DEF
가 표시됩니다 :
GHI JKL
그리고를 H는 강조 표시됩니다 (B와 동일한 위치에 있기 때문에).
다음@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder = null;
if (convertView == null) {
viewHolder=new ViewHolder();
LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view=layoutInflater.inflate(R.layout.highwayappselectionitem,parent, false);
viewHolder.appImageIcon=(ImageView) view.findViewById(R.id.highwayGridViewItemIcon);
viewHolder.appNameLabel=(TextView) view.findViewById(R.id.highwayGridViewItemName);
viewHolder.appInfoButton = (ImageView) view.findViewById(R.id.highwayGridViewItemInfoButton);
viewHolder.linearLayout = (LinearLayout) view.findViewById(R.id.HighwayGridViewItem);
}else{
view= convertView;
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.appNameLabel.setText(appsList.get(position).getAppName());
viewHolder.appImageIcon.setImageDrawable(appsList.get(position).getImageIcon());
view.setTag(viewHolder);
viewHolder.linearLayout.setOnClickListener(new MyOnClickListener(position,0));
return view;
}
이 (어댑터 내부) 리스너입니다 내가 배경을 설정합니다
여기 내의 getView 방법입니다. 기본적으로 내가 gridview에서 항목을 누르면, 그 항목이 특정 색상으로 배경을 변경하여 사람이 그것을 눌렀다는 것을 알 수 있기를 바랍니다.
public void onClick(View v) {
if(selectedView==0 || selectedView==1){
appName=appsList.get(position).getAppName();
filePath=appsList.get(position).getFilePath();
appLogo=appsList.get(position).getImageIcon();
v.setBackgroundColor(activity.getResources().getColor(R.color.light_grey));
System.out.println("Just pressed the app ... "+appName);
System.out.println("His filePath is ... "+filePath);
HighwayGridViewAppItem tmpSelectedItem= new HighwayGridViewAppItem(appLogo, appName, filePath);
selectedAppsList.add(tmpSelectedItem);
System.out.println("AppSelectionCUstomAdapter : Added a new application to the list of selected apps .!!!!!!!!!!!!!!!.........");
System.out.println("AppselectioncustomAdaptaer : The size of the selectedAppsList is now : "+selectedAppsList.size());
}else{
//pressed the info button
System.out.println("This will be implemented later, need access to the webservices");
}
}
}
appslist가있는 gridview 내 사용자 정의 항목의 목록입니다
여기에 그 청취자 내 코드입니다.
업데이트 : 해결 방법은 선택한 대답을 적용하는 것입니다.
기본적으로 나는 뷰의 배경을 잘 설정하고 있었지만 재사용되고 있기 때문에 (뷰잉 홀더를 사용하고 있기 때문에), 그리고 뷰에는 이미 그 배경의 배경이 있었기 때문에 그것은 재사용 될 것이고, 배경색으로 재사용 될 것입니다. 해결책은 단순히 else 문을 작성하고 배경을 첫 번째 색상으로 되돌려 놓는 것입니다.
내가 편집하지 않으려 고했기 때문에 그것을 재 게시했습니다. 또한이 방법은 대부분의 사람들이 보는 최신의 것으로 이동합니다. 그리고 지금은 밤에 이것을 게시하고 있기 때문에 "새로운 사람들"에 도달하게됩니다. 다시 말하지만, 내가 다른 질문을 삭제하거나 편집 할 수는 있겠지만, 나를 풀어주지는 못했습니다. –
그러나 답변을 가지고 있기 때문에 삭제할 수 없으므로 차단 될 수 있습니다. –
이 질문은 이제 해결되었습니다.Btw, 최근 질문에 태그를 붙인 두 번째 질문은 다른 질문입니다. 선택기와 함께 누를 때 강조 표시하고 다른 배경으로 두지 말아야한다는 것입니다. –