Reputation: 91
I am trying to put a listview within an activity, then retrieve data from my sqlite database. Then, user can check/uncheck multiple option from that listview that has checkbox included that shows the name of customers.. When the checkbox is checked, i wish to perform function such as add expenses to particular customer in a table in sqlite database that is checked by user. The problem is, i created the listView with checkbox in every row, but i got stucked because i don't know how to perform function on it. Can anyone guide me here? Or giving me idea how to do it? Thanks.
Here is my code with the listView:
public class AddExpense extends ListActivity implements OnClickListener{
EditText expenseName;
Spinner expenseType;
EditText expensePrice;
EditText expenseQuantity;
EventController controller = new EventController(this);
Button btnadd;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addexpense);
expenseName = (EditText)findViewById(R.id.expenseName);
expenseType = (Spinner)findViewById(R.id.expenseType);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.type, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
expenseType.setAdapter(adapter);
expensePrice = (EditText)findViewById(R.id.expensePrice);
expenseQuantity = (EditText)findViewById(R.id.expenseQuantity);
btnadd = (Button)findViewById(R.id.btnaddexp);
btnadd.setOnClickListener(this);
HashMap<String, String> queryValues = new HashMap<String, String>();
Intent objIntent = getIntent();
String eventId = objIntent.getStringExtra("eventId");
queryValues.put("eventId", eventId);
//Create Listview that retrieve all the customer data in that event
ArrayList<HashMap<String, String>> friendList = controller
.getAllFriends(queryValues);
if (friendList.size() != 0) {
lv = getListView();
}
SimpleAdapter adapter1 = new SimpleAdapter(AddExpense.this,
friendList, R.layout.view_expenses_participant_entry, new String[] {
"friendId", "friendName" },
new int[] { R.id.friendId, R.id.friendName});
adapter.notifyDataSetChanged();
setListAdapter(adapter1);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
HashMap<String, String> queryValues = new HashMap<String, String>();
Intent objIntent = getIntent();
String eventId = objIntent.getStringExtra("eventId");
queryValues.put("eventId", eventId);
queryValues.put("expenseName", expenseName.getText().toString());
queryValues.put("expenseType", expenseType.getSelectedItem().toString());
queryValues.put("expensePrice", expensePrice.getText().toString());
queryValues.put("expenseQuantity", expenseQuantity.getText().toString());
controller.insertExpense(queryValues);
this.callHomeActivity(v);
finish();
}
public void callHomeActivity(View view) {
super.onResume();
}
}
This is the xml file of every single row :
<CheckBox
android:id="@+id/list_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false" >
</CheckBox>
<TextView
android:id="@+id/friendId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/friendName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:paddingLeft="6dip"
android:paddingTop="6dip"
android:textColor="#A4C739"
android:textSize="17sp"
android:textStyle="bold" />
</LinearLayout>
Upvotes: 0
Views: 944
Reputation: 23606
Make Custom adapter for ListView as like ArrayAdapter.
With in that adapter class you will have to code on getView() method of that class.
here you can update the code based on the click on checkBox. If checkbox is cheked then insert record and if it is unchecked then do as you want.
please let me know if you have any query.
Upvotes: 1