java操作ListView中的选定项
im有一个名为type_of_dairy的布局,代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:orientation="vertical" 安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:layout_marginTop="20dp"
安卓:layoutDirection="rtl"
安卓:weightSum="1">
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceMedium"
安卓:text="Type"
安卓:id="@+id/iceCreamType"
安卓:layout_gravity="center_horizontal"
安卓:layout_weight="0.05"
安卓:layout_marginTop="20dp"/>
<ListView
安卓:layout_width="match_parent"
安卓:layout_height="35dp"
安卓:id="@+id/listView"
安卓:layout_weight="0.26"
安卓:background="#999900"
安卓:choiceMode="singleChoice"
/>
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:textAppearance="?安卓:attr/textAppearanceMedium"
安卓:text="Flavour"
安卓:id="@+id/iceCreamFlavor"
安卓:layout_gravity="center_horizontal"
安卓:layout_weight="0.05"
安卓:layout_marginTop="10dp"/>
<ListView
安卓:layout_width="match_parent"
安卓:layout_height="58dp"
安卓:id="@+id/listView2"
安卓:layout_gravity="center_horizontal"
安卓:background="#999900"
安卓:choiceMode="singleChoice"
/>
<EditText
安卓:layout_width="89dp"
安卓:layout_height="wrap_content"
安卓:inputType="number"
安卓:layout_gravity="center_horizontal"
安卓:layout_marginTop="10dp"
安卓:ems="10"
安卓:id="@+id/editText"
/>
<Button
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Apply"
安卓:id="@+id/countOficeCream"
安卓:layout_gravity="center_horizontal"
安卓:layout_marginTop="10dp"
安卓:layout_weight="0.05" />
<Button
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="Cancel"
安卓:id="@+id/iceCreamReject"
安卓:layout_gravity="center_horizontal"
安卓:layout_marginTop="10dp"
安卓:layout_weight="0.05" />
</LinearLayout>
如您所见,我有两个ListView
,我已经从我的数据库中填写了第一个ListView
,我的数据库表的一个字段已经选择填充这个ListView(@+id/listView)
,有两个按钮,我希望当我从第一个ListView(@+id/listView)
中选择一个项目时,第二个ListView (@+id/listView2)
用我的数据库的另一个字段填写
public class Dairy extends Activity {
Button returnBack;
Statement statement;
Statement statement2;
ListView dairyType;
ListView dairyFlavour;
ArrayList<String> typeArray;
ArrayList<String> dairyArray;
ArrayAdapter<String> typeAdapter;
ArrayAdapter<String> flavorAapter;
String typeString, flavourString;
private Object view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.type_of_dairy);
dairyType = (ListView) findViewById(R.id.listView);
dairyFlavour = (ListView) findViewById(R.id.listView2);
typeArray = new ArrayList<String>();
typeAdapter = new ArrayAdapter<String>(getApplicationContext(),
安卓.R.layout.simple_list_item_single_choice, typeArray);
flavorAapter = new ArrayAdapter<String>(getApplicationContext(),
安卓.R.layout.simple_list_item_single_choice, dairyArray);
try
{
ConnectionHelper connectionHelper = new ConnectionHelper();
statement = connectionHelper.getConnection().createStatement();
ResultSet resultSet = statement.executeQuery("select Name from tblProductCategory where TypeId=1");
if(resultSet.next()) {
do {
typeString=resultSet.getString(resultSet.findColumn("Name"));
typeArray.add(typeString);
dairyType.setAdapter(typeAdapter);
}while(resultSet.next());
}
}
catch (SQLException e)
{
}
dairyType.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
try{
ConnectionHelper connectionHelper = new ConnectionHelper();
statement2 = connectionHelper.getConnection().createStatement();
ResultSet resultSet = statement2.executeQuery("select username from tblUser");
if(resultSet.next())
{
do {
flavourString = resultSet.getString(resultSet.findColumn("UserName"));
dairyArray.add(flavourString);
dairyFlavour.setAdapter(flavorAapter);
} while (resultSet.next());
}
}catch (SQLException e)
{
Toast.makeText(getApplicationContext(), "Problem detected", Toast.LENGTH_LONG).show();
}
}
});
我希望当我从第一个ListView(dairyType)
中选择一个项目时,从我的数据库的另一个表中选择一些数据并显示在第二个ListView(dairyFlavour)
中,这一部分我说过:
dairyType.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
try{
ConnectionHelper connectionHelper = new ConnectionHelper();
statement2 = connectionHelper.getConnection().createStatement();
ResultSet resultSet = statement2.executeQuery("select username from tblUser");
if(resultSet.next())
{
do {
flavourString = resultSet.getString(resultSet.findColumn("UserName"));
dairyArray.add(flavourString);
dairyFlavour.setAdapter(flavorAapter);
} while (resultSet.next());
}
}catch (SQLException e)
{
Toast.makeText(getApplicationContext(), "Problem detected", Toast.LENGTH_LONG).show();
}
}
});
但是我在我的安卓设备中停止了我的应用程序,在安卓 studio中停止了我的应用程序,
然而,通过与DB的连接,我显示了第一个ListView
,并登录到应用程序中
# 1 楼答案
根据给定的代码,您似乎忘记初始化“dairyArray”。 先初始化,然后添加字符串
您可能在“dairyArray.add(flavourString);”上出错,因为dairyArray没有初始化。 我希望它能奏效
# 2 楼答案
正如我的朋友@harish所说,我没有在代码中分配dairyArray,因此相关的适配器不会返回任何结果, 但我通过以下代码对所选项目进行操作:
然后返回str