Markieren und halten Sie markiert das ausgewählte Element im Listview-Steuerelement
Ich habe eine listview füllt die Daten aus dem cursor. Die listview hat ein customadapter. Ich möchten, markieren Sie das ausgewählte Element in der listview
public class BillOfSaleActivity extends Activity {
ListView lv1;
CustomAdapter listAdapter;
DbHandler dbHandler;
Cursor c;
TextView salesman;
TextView customer;
TextView TC;
String userName;
String custName;
Float TotalCost = 0f;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bos_main);
Intent i = getIntent();
userName = i.getStringExtra("userName");
custName = i.getStringExtra("custName");
salesman = (TextView) findViewById(R.id.tv_bosSalesman);
customer = (TextView) findViewById(R.id.tv_boscust);
TC = (TextView) findViewById(R.id.textView_bos_total);
salesman.setText(userName);
customer.setText(custName);
dbHandler = new DbHandler(getApplicationContext());
c = dbHandler.getBosList();
if (c != null) {
if (c.moveToFirst())
do {
Float qty = Float.parseFloat(c.getString(4));
Float price = Float.parseFloat(c.getString(5)) * qty;
TotalCost = TotalCost + price;
} while (c.moveToNext());
}
c.moveToFirst();
lv1 = (ListView) findViewById(R.id.listView_bos);
lv1.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lv1.setSelector(R.drawable.list_selector);
//String []from = new String []
//{DbHandler.Bos_List_col5,DbHandler.Bos_List_col6};
listAdapter = new CustomAdapter(getApplicationContext(), c);
lv1.setAdapter(listAdapter);
TC.setText("$" + TotalCost);
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
view.getFocusables(position);
view.setSelected(true);
}
});
}
public class CustomAdapter extends BaseAdapter {
Cursor cursor;
Context context;
public CustomAdapter(Context cont, Cursor c) {
this.cursor = c;
this.context = cont;
}
@Override
public int getCount() {
//TODO Auto-generated method stub
return c.getCount();
}
@Override
public Object getItem(int arg0) {
//TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
//TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View view, ViewGroup arg2) {
Log.i("dhiraj", "In getView");
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.activity_bos_list, null);
cursor.moveToPosition(position);
TextView textView1 = (TextView) view
.findViewById(R.id.textView1_bos);
TextView textView2 = (TextView) view
.findViewById(R.id.textView2_bos);
TextView textView3 = (TextView) view
.findViewById(R.id.textView3_bos);
TextView textView4 = (TextView) view
.findViewById(R.id.textView4_bos);
textView1.setText(cursor.getString(3));
textView2.setText(cursor.getString(2));
textView3.setText(cursor.getString(4) + " x $"
+ cursor.getString(5));
Float qty = Float.parseFloat(cursor.getString(4));
Float price = Float.parseFloat(cursor.getString(5)) * qty;
textView4.setText("$ " + price);
return view;
}
}
}
Layout ich benutze, ist... dies ist das Haupt-layout.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/linz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:weightSum="2" >
<TextView
android:id="@+id/tv_bosSalesman"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="20dp"
android:text="Salesman"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/red" />
<TextView
android:id="@+id/tv_boscust"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Customer"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/lightBlue" />
</LinearLayout>
<TextView
android:id="@+id/tv_bos_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linz"
android:background="@android:color/darker_gray"
android:gravity="center"
android:text="Nota de Venta"
android:textAppearance="?android:attr/textAppearanceLarge" />
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tv_bos_header"
android:weightSum="4" >
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Cant"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Cod"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Nombre"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="Total"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<ListView
android:id="@+id/listView_bos"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/linz12"
android:layout_below="@+id/lin"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:dividerHeight="1dp"
android:drawSelectorOnTop="true" />
<LinearLayout
android:id="@+id/linz234"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:weightSum="3" >
<Button
android:id="@+id/button_bos_eliminar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Eliminar"
android:textColorHint="@color/red" />
<Button
android:id="@+id/button_bos_agregar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Agregar"
android:textColorHint="@color/green" />
<Button
android:id="@+id/button_bos_finalizar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Finalizar"
android:textColorHint="@color/blue" />
</LinearLayout>
<LinearLayout
android:id="@+id/linz12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/linz234"
android:layout_alignParentLeft="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical" >
<TextView
android:id="@+id/textView_bos_total"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
Das andere layout enthält 4 Textfelder, die verwendet wird, für die Listview.
Nun will ich hervorheben, die gedrückt item in der Listview. Wie kann ich erreichen, dass. Ich habe versucht mit der selector-aber kein Effekt. Ich will, dass ein Element markiert ist, bis zum nächsten Element ausgewählt ist .
- stackoverflow.com/questions/9281000/... - link description here][1] [1]: stackoverflow.com/questions/9281000/...
InformationsquelleAutor Dhiraj Tayade | 2013-12-05
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn u wollen, um alle ausgewählten Elemente hervorgehoben in der Listenansicht,
ListViews standardmäßig nicht über eine choiceMode gesetzt, so dass sich bei der aktuellen Auswahl nicht angezeigt standardmäßig.
Um dies zu ändern, brauchen Sie nur legen Sie die choiceMode Attribut des ListView zu singleChoice.
Und um zu zeigen, ausgewählte Objekte in Ihrer Liste, sollten Sie auch die listSelector Attribut.
Beispiel:
Fortsetzung von Raschi ' s Antwort, hier ist der einfache Ansatz, der arbeitete für mich - verfolgen Sie die zuletzt ausgewählte Element, so dass Sie wissen, was man abschalten von der vorherigen auf, bevor er sich auf das aktuell ausgewählte Element.
Werfen Sie einen Blick auf diese Antwort was mir half, so gut.
Dort finden Sie, wie zu wählen Sie ein Element in einem listView-und auch halten es hervorgehoben, bis ein anderes Objekt ausgewählt ist.