有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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,并登录到应用程序中


共 (2) 个答案

  1. # 1 楼答案

    根据给定的代码,您似乎忘记初始化“dairyArray”。 先初始化,然后添加字符串

    您可能在“dairyArray.add(flavourString);”上出错,因为dairyArray没有初始化。 我希望它能奏效

  2. # 2 楼答案

    正如我的朋友@harish所说,我没有在代码中分配dairyArray,因此相关的适配器不会返回任何结果, 但我通过以下代码对所选项目进行操作:

            public void onClick(View v) {
                String str;
            str=flavorAapter.getItem(dairyFlavour.getCheckedItemPosition()).toString();
    

    然后返回str