我正在使用我的第一个Android应用程序,所以我需要一些帮助..
我有一个listview,它从SQLite数据库中争论值,我需要选择一个项目,获取它的ID并打开一个新的活动......怎么做?
我有一个显示项目列表的活动,但我不知道如何选择项目并使用项目ID打开另一个活动。
package chintan.khetiya.sqlite.cursor;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import chintan.khetiya.sqlite.cursor.Main_Screen.Contact_Adapter;
import chintan.khetiya.sqlite.cursor.Main_Screen.Contact_Adapter.UserHolder;
public class home_screen extends Activity{
//Button add_btn;
ListView Contact_listview;
ArrayList<Contact> contact_data = new ArrayList<Contact>();
Contact_Adapter cAdapter;
DatabaseHandler db;
String Toast_msg;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
try {
Contact_listview = (ListView) findViewById(R.id.list_pedidos);
Contact_listview.setItemsCanFocus(false);
Contact_listview.setClickable(true);
Set_Referash_Data();
} catch (Exception e) {
// TODO: handle exception
Log.e("Error", "" + e);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Clientes:
finish();
startActivity(new Intent(this, Main_Screen.class));
return true;
case R.id.Productos:
finish();
startActivity(new Intent(this, Product_Screen.class));
return true;
case R.id.Nuevo_Pedido:
finish();
startActivity(new Intent(this, home_screen.class));
return true;
case R.id.Nuevo_Pedido_dentro:
finish();
startActivity(new Intent(this, nuevo_pedido.class));
return true;
case R.id.salir:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void Set_Referash_Data() {
contact_data.clear();
db = new DatabaseHandler(this);
ArrayList<Contact> contact_array_from_db = db.Get_Contacts();
for (int i = 0; i < contact_array_from_db.size(); i++) {
int tidno = contact_array_from_db.get(i).getID();
String name = contact_array_from_db.get(i).getName();
String mobile = contact_array_from_db.get(i).getPhoneNumber();
String email = contact_array_from_db.get(i).getEmail();
Contact cnt = new Contact();
cnt.setID(tidno);
cnt.setName(name);
cnt.setEmail(email);
cnt.setPhoneNumber(mobile);
contact_data.add(cnt);
}
db.close();
cAdapter = new Contact_Adapter(home_screen.this, R.layout.listview_pedidos_row,
contact_data);
Contact_listview.setAdapter(cAdapter);
cAdapter.notifyDataSetChanged();
}
public void Show_Toast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Set_Referash_Data();
}
public class Contact_Adapter extends ArrayAdapter<Contact> {
Activity activity;
int layoutResourceId;
Contact user;
ArrayList<Contact> data = new ArrayList<Contact>();
public Contact_Adapter(Activity act, int layoutResourceId,
ArrayList<Contact> data) {
super(act, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.activity = act;
this.data = data;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
UserHolder holder = null;
if (row == null) {
LayoutInflater inflater = LayoutInflater.from(activity);
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserHolder();
holder.name = (TextView) row.findViewById(R.id.user_name_txt);
holder.email = (TextView) row.findViewById(R.id.user_email_txt);
holder.number = (TextView) row.findViewById(R.id.user_mob_txt);
//holder.edit = (Button) row.findViewById(R.id.btn_update);
//holder.delete = (Button) row.findViewById(R.id.btn_delete);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
user = data.get(position);
//holder.edit.setTag(user.getID());
//holder.delete.setTag(user.getID());
holder.name.setText(user.getName());
holder.email.setText(user.getEmail());
holder.number.setText(user.getPhoneNumber());
return row;
}
class UserHolder {
TextView name;
TextView email;
TextView number;
Button edit;
Button delete;
}
}
}
答案 0 :(得分:1)
您需要为ListView设置setOnItemClickListener
以获取所选项目详细信息并转到下一个活动:
Contact_listview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapter, View arg1,
int arg2,long arg3) {
int selected_row=arg2;
// get selected row data
Contact user=(Contact)adapter.getItem(selected_row);
//start next activity here
}
});