文字列だけで構成されるレコードを一覧にして表示させた場合、レコード間の区切りが見分けにくくなります。
その対処方法として、 レコード毎に色を変えて表示するとか、レコード間の幅を大きくするという方法があります。
javaのコードの概要は下記のとおりです。概要を示したものであるため、このママでは動作しません(見れば分かる)
色分けのフラグをレコード毎に設定し、そのフラグに基づいて背景色を変更すること、そして、背景色の設定にはアルファ値を適当な値で設定することがポイントです。アルファ値を0xffに設定した場合、利用者がそのレコードを選択しても「選択したことを示す背景色」が表示されません。
ArrayList<Map<String, Object>> al;//List表示用データ
al = new ArrayList<Map<String, Object>>();
b = cs.moveToLast();
int i = 0;
while(b==true){
String s;
Map<String, Object> m;
m = new HashMap<String, Object>();
s = cs.getString(cs.getColumnIndex("Keyword"));
m.put("Keyword", s);
m.put("Background", i%2);//ゼロか1を代入する
al.add(m);
i++;
b = cs.moveToPrevious();
}
}
cs.close();
String sFrom[] = {"Keyword", "Background"};
int iTo[] = new int[]{ R.id.Keyword_Text, R.id.Layout_Keyword_Background };
SimpleAdapter sa;
SimpleAdapter.ViewBinder savb;
savb = new SimpleAdapter.ViewBinder(){
@Override
public boolean setViewValue(View v, Object data, String s){
if(v.getId()==R.id.Layout_Keyword_Background){
int i = (Integer)data;
if(i==1) v.setBackgroundColor(0x60ffdddd);
else v.setBackgroundColor(0x00ffffff);
return true;
}
return false;
}
};
sa = new SimpleAdapter(mainActivity, al, R.layout.list_keyword, sFrom, iTo);
sa.setViewBinder(savb);
ListView lv;
lv = (ListView)mainActivity.findViewById(R.id.ListKeyword);
lv.setOnItemClickListener(this);
lv.setAdapter(sa);
lv.setDividerHeight(10);
list_keyword.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Layout_Keyword_Background"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
>
<TextView
android:id="@+id/Keyword_Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="false"
>
</TextView>
</LinearLayout>
メ~テレ ぬいぐるみのラパン
0 件のコメント:
コメントを投稿