Android 将名称从listview项传递给另一个活动
嘿,伙计们,我构建了一个listview,在其中我通过json解析来自mysql的数据。我想单击列表视图中的某个项目,并将所选项目的名称和价格发送给其他活动。到目前为止,我已经做到了:Android 将名称从listview项传递给另一个活动,android,mysql,listview,Android,Mysql,Listview,嘿,伙计们,我构建了一个listview,在其中我通过json解析来自mysql的数据。我想单击列表视图中的某个项目,并将所选项目的名称和价格发送给其他活动。到目前为止,我已经做到了: public void registerCallClickBack() { ListView list = (ListView) findViewById(R.id.listView1); list.setOnItemClickListener(new AdapterView.On
public void registerCallClickBack() {
ListView list = (ListView) findViewById(R.id.listView1);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
Object o = parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", o.toString());
//intent.putExtra("price", R.id.stock_price);
startActivity(intent);
}
});
}
它现在运行良好,但它给了我一个结果{price=所选项目的价格,name=所选项目的名称}…我想有2个文本视图,第一个文本视图有名称,第二个文本视图有价格。这怎么可能
这就是我的ListView的创建方式
public void ListDrawer() {
List<Map<String, String>> stocksList = new ArrayList<Map<String, String>>();
try {
JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("metoxes");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String name = jsonChildNode.optString("name");
String price = jsonChildNode.optString("price");
stocksList.add(createStockList(name, price));
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Error" + e.toString(),
Toast.LENGTH_SHORT).show();
}
String[] from = { "name", "price"};
int[] to = { R.id.stock_name, R.id.stock_price };
SimpleAdapter simpleAdapter = new SimpleAdapter(this, stocksList,
R.layout.list_item,
from, to);
listView.setAdapter(simpleAdapter);
}
private HashMap<String, String> createStockList(String name, String price) {
HashMap<String, String> stockNameNo = new HashMap<String, String>();
stockNameNo.put("name", name);
stockNameNo.put("price", price);
return stockNameNo;
}
public void ListDrawer(){
List stocksList=new ArrayList();
试一试{
JSONObject jsonResponse=新的JSONObject(jsonResult);
JSONArray jsonMainNode=jsonResponse.optJSONArray(“metoxes”);
for(int i=0;i
My list_item.xml负责listview中的每个项目
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#000"
android:fitsSystemWindows="true"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/stock_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="28dp"
android:textColor="#fff"
android:layout_toRightOf="@+id/textView1"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/stock_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/textView2"
android:padding="10dp"
android:shadowColor="#fff"
android:shadowDy="4.0"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#fff" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/stock_name"
android:text="@string/current_price"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#fff" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/stock_name"
android:layout_alignBottom="@+id/stock_name"
android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/imageView1"
android:text="@string/stock_name"
android:textColor="#fff" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView1"
android:layout_alignParentLeft="true"
android:layout_marginLeft="14dp"
android:layout_marginBottom="3dp"
android:src="@drawable/ic_launcher_stock_custom_icon" />
</RelativeLayout>
我只使用textview中的股票名称和股票价格来放置来自数据库的每个股票的名称和价格
我希望这能帮助更多
我膨胀的布局是这样的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".StockItem" >
<TextView
android:id="@+id/stockView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/hello_world" />
</RelativeLayout>
从您的数组中获取名称和价格,使用该数组可以膨胀ListView。如下图所示:
public void registerCallClickBack() {
ListView list = (ListView) findViewById(R.id.listView1);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
String name=YOUR ARRAY.get(position);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", name);
//intent.putExtra("price", R.id.stock_price);
startActivity(intent);
}
});
}
public void register调用clickback(){
ListView列表=(ListView)findViewById(R.id.listView1);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共视图单击(AdapterView父级,视图单击,
内部位置,长id){
String name=您的数组.get(位置);
意向意向=新意向(MainActivity.this、StockItem.class);
意向。额外(“名称”,名称);
//意向。额外支付(“价格”,R.id.股票价格);
星触觉(意向);
}
});
}
从您的数组中获取名称和价格,使用该数组可以膨胀ListView。如下图所示:
public void registerCallClickBack() {
ListView list = (ListView) findViewById(R.id.listView1);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
String name=YOUR ARRAY.get(position);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", name);
//intent.putExtra("price", R.id.stock_price);
startActivity(intent);
}
});
}
public void register调用clickback(){
ListView列表=(ListView)findViewById(R.id.listView1);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共视图单击(AdapterView父级,视图单击,
内部位置,长id){
String name=您的数组.get(位置);
意向意向=新意向(MainActivity.this、StockItem.class);
意向。额外(“名称”,名称);
//意向。额外支付(“价格”,R.id.股票价格);
星触觉(意向);
}
});
}
您正在使用intent,这是正确的方法
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
TextView tv1 =(TextView)viewClicked.findViewById(R.id.stock_name);
TextView tv2 =(TextView)viewClicked.findViewById(R.id.stock_price);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", tv1.getText().toString());
intent.putExtra("price",tv2.getText().toString());
startActivity(intent);
}
});
您使用的是意图,这是正确的方法
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked,
int position, long id) {
TextView tv1 =(TextView)viewClicked.findViewById(R.id.stock_name);
TextView tv2 =(TextView)viewClicked.findViewById(R.id.stock_price);
Intent intent = new Intent(MainActivity.this, StockItem.class);
intent.putExtra("name", tv1.getText().toString());
intent.putExtra("price",tv2.getText().toString());
startActivity(intent);
}
});
您可以重写模型的toString()方法。例如:
@Override
public String toString() {
return price + "separator" + name;
}
然后您可以解析它:
String[] item = string.split("separator");
String part1 = parts[0]; // price
String part2 = parts[1]; //name
您可以重写模型的toString()方法。例如:
@Override
public String toString() {
return price + "separator" + name;
}
然后您可以解析它:
String[] item = string.split("separator");
String part1 = parts[0]; // price
String part2 = parts[1]; //name
你的listview行有2个文本视图吗?你能发布你在适配器的getView中膨胀的布局吗?你的listview行有2个文本视图吗?你能发布你在适配器的getView中膨胀的布局吗?我发布了更多的代码..我的数组?我从mysql加载项目。我发布了更多代码..我的数组?我从mysql加载项目,也不需要这个
Object o=parent.getItemAtPosition(position)代码>。在StockItem.java中,我应该如何获取2个文本视图中的数据?@KostasMatrix使用键和getIntent@user370305抱歉,似乎ping错了用户。也不需要此对象o=parent.getItemAtPosition(位置)代码>。在StockItem.java中,我应该如何获取2个文本视图中的数据?@KostasMatrix使用键和getIntent@user370305抱歉,似乎ping错了用户。