F
FinelyDoyle
Neues Mitglied
- 0
Hallo zusammen,
ich hab ein Problem bei den ListViews.
ich würde gerne eine ListView machen bei der ich mehrere items auswählen kann (listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)).
Die jeweils ausgewählten Elemente sollen dann, typisch der Holo-Theme, hellblau hinterlegt sein. Jedoch will bei mir das Hinterlegen nicht so richtig Funktionieren. Wenn ein Element checked ist wird nur die Schrift etwas dünkler.
layout/activity_main.xml
layout/main_row.xml
drawable/list_view.xml
values/strings.xml
MainActivity.java
könnt ihr mir da vielleicht helfen.
LG Finley
ich hab ein Problem bei den ListViews.
ich würde gerne eine ListView machen bei der ich mehrere items auswählen kann (listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)).
Die jeweils ausgewählten Elemente sollen dann, typisch der Holo-Theme, hellblau hinterlegt sein. Jedoch will bei mir das Hinterlegen nicht so richtig Funktionieren. Wenn ein Element checked ist wird nur die Schrift etwas dünkler.
layout/activity_main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listView"
android:background="@drawable/list_view">
</ListView>
</LinearLayout>
layout/main_row.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:orientation="vertical"
>
<TextView
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
/>
</LinearLayout>
drawable/list_view.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="false"
android:drawable="@color/white" />
<item
android:state_checked="true"
android:state_selected="true"
android:state_focused="true"
android:state_pressed="true"
android:drawable="@color/blue" />
</selector>
values/strings.xml
Code:
<resources>
<color name="blue">#33B5E5</color>
<color name="white">#FFFFFF</color>
</resources>
MainActivity.java
Code:
public class MainActivity extends Activity {
private ListView listView;
private MyCustomAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listAdapter = new MyCustomAdapter();
listView.setAdapter(listAdapter);
listAdapter.addRow("Item 1");
listAdapter.addRow("Item 2");
listAdapter.addRow("Item 3");
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if(listView.isItemChecked(arg2)){
listView.setItemChecked(arg2, true);
}else{
listView.setItemChecked(arg2, false);
}
SparseBooleanArray checked = listView.getCheckedItemPositions();
int len = listView.getCount();
String str = "";
for(int i=0;i<len;i++)
{
if(checked.get(i)==true)
{
String item = listView.getAdapter().getItem(checked.keyAt(i)).toString();
str = str + item;
}
}
Toast.makeText(MainActivity.this,
str, Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private class MyCustomAdapter extends BaseAdapter {
private ArrayList<String> resultData = new ArrayList<String>();
private LayoutInflater mInflater;
public MyCustomAdapter() {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void addRow(String item) {
resultData.add(item);
notifyDataSetChanged();
}
public String getResultItem(int position) {
return resultData.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.main_row,
parent, false);
holder = new ViewHolder();
holder.textView = (TextView) convertView.findViewById(R.id.row);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(getResultItem(position));
return convertView;
}
public int getCount() {
return resultData.size();
}
public Object getItem(int position) {
return getResultItem(position);
}
}
private static class ViewHolder {
TextView textView;
public ViewHolder() {
}
}
}
könnt ihr mir da vielleicht helfen.
LG Finley