私はカスタムリストビューを表示していて、リストダウン用の別のボタンとリストアップ用の別のボタンからリストをトラバースしたいので、ここで現在選択されているアイテムの位置を取得できるので、使用しています-
list.setSelection(newpostion);
しかし、指定された位置のハイライトを見ることができません。ここでは、リストは適切にトラバースされていますが、ユーザーは現在自分がどのリスト項目にいるのかを確認できません。特定のリスト項目の背景を強調表示または変更する方法を教えてください。
状態変更の背景のようなセレクターで試しましたが、うまくいきませんでした。実用的な解決策を教えてください。
リストアダプターのコードは次のとおりです-
package com.sho;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
public class list_adapter extends ArrayAdapter<HashMap<String,String>>
{
ArrayList<HashMap<String,String>> items;
LayoutInflater mInflater ;
Context context;
int layoutResourceId;
public list_adapter(Context context, int layoutResourceId, ArrayList<HashMap<String, String>> _list)
{
super(context, layoutResourceId, _list);
this.layoutResourceId=layoutResourceId;
this.items = _list;
this.context=context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder = new ViewHolder();
if(row==null)
{
mInflater = ((Activity)context).getLayoutInflater();
row = mInflater.inflate(R.layout.chapterdetails, parent, false);
holder.name = (TextView) row.findViewById(R.id.chapterdata);
}
else
{
holder=(ViewHolder)row.getTag();
}
row.setTag(holder);
row.setId(position);
HashMap<String,String> map=items.get(position);
holder.name.setText(map.get("DESCRIPTION"));
return row;
}
static class ViewHolder
{
TextView name;
ImageButton annotion,bookmark,edit;
}
}
リストをトラバースしたい場所からのボタンのコード、ここでリスト名は ls-
View earliest=new View(MainActivity.this);
if(postion<a1&&postion<=a1-2)
{
postion++;
earliest=ls.getRootView().findViewById(postion);
earliest.setBackground(null);
View v=new View(MainActivity.this);
v=ls.getRootView().findViewById(postion);
v.setBackgroundColor(Color.RED);
previous.setBackgroundColor(Color.BLUE); // your list
previous=v;
} } });