Wie ändere ich in der Listenansicht jeweils nur eine Zeile?
Ich versuche, die Lösung für das folgende aufgelistete Problem zu finden. Ich habe einListview
generiert mitSimpleadapter
. Wenn ich in der Listenansicht auf eine Zeile klicke, möchte ich ein Layout mit einer ID erstellencolorful
als sichtbar. Das kann ich. Aber hier beginnt mein Problem. Wenn ich auf eine andere Zeile mit der Nummer 5 klicke, wird das farbenfrohe Layout angezeigt, das Layout wird jedoch auch für die zuvor angeklickte Zeile angezeigt. Was ich tun möchte, ist, das Layout nur für die angeklickte Zeile farbig sichtbar zu machen (dh es sollte immer nur für eine Zeile sichtbar sein, dh es wird gerade auf die Zeile geklickt und für alle verbleibenden Zeilen ausgeblendet), und das Layout sollte für die nicht sichtbar werden zuvor angeklickte Zeilen. Ich habe versucht, mit zu tunviewholder
aber es hilft nicht. Mein Code-Snippet ist unten. Führe mich Schritt für Schritt, da ich noch nicht mit Android vertraut bin.
final BaseAdapter k=new SimpleAdapter(getActivity(),val,R.layout.mytaskdata,new String[]{"sname","heading","desc","id","path","receiver","sender"},new int[]{R.id.textView1,R.id.textView2,R.id.textView3,R.id.hide1,R.id.hide2,R.id.hide3,R.id.hide4})
{
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final View v = super.getView(position, convertView, parent);
TextView myname=(TextView)v.findViewById(R.id.textView1);
TextView mydes=(TextVie,w)v.findViewById(R.id.textView2);
TextView mytopic=(TextView)v.findViewById(R.id.textView3);
ImageView edit=(ImageView)v.findViewById(R.id.ImageView03);
sent.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
RelativeLayout r=(RelativeLayout)arg1.findViewById(R.id.colorful);
// r.setVisibility(arg1.VISIBLE);
int temp=sent.getCheckedItemPosition();
Log.i("itemposition",""+temp);
Toast.makeText(getActivity(),"pos"+arg2+"hii"+positionThatSaysHi,1000).show();
if(arg2!=positionThatSaysHi)
{
r.setVisibility(arg1.VISIBLE);
positionThatSaysHi = arg2;
notifyDataSetChanged();
}
else
{
r.setVisibility(arg1.GONE);
notifyDataSetChanged();
}
});