有 Java 编程相关的问题?

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

新字符串查询中表中的java字符串

我得到了这个密码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_clicked);
    String query = "SELECT ROWID _id, linie"
            + " FROM linie";

    ArrayList<String> HaltestellenListe = CursorToArray(getApplicationContext(), query, new String[] {});

    final ListView lvD = (ListView) findViewById(R.id.lvClicked);


    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.activity_clicked, R.id.tvClicked, HaltestellenListe);
    lvD.setAdapter(arrayAdapter);
    lvD.setDividerHeight(8);



    lvD.setOnItemClickListener(new OnItemClickListener() { 
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  String linie = lvD.getItemAtPosition(position).toString();

                 }
        });






}

public ArrayList<String> CursorToArray(Context ApplicationContext, String query, String[] whereClause){
    ArrayList<String> ArrayList = new ArrayList<String>();

    DataBaseHelper dbHelper = new DataBaseHelper(getBaseContext());

    Cursor c = dbHelper.dbHelper(ApplicationContext).rawQuery(query, whereClause);
    dbHelper.close();

    c.moveToFirst();


    while (!c.isAfterLast()){

        if (c.isNull(c.getColumnIndex("linie")) == false){
            ArrayList.add(c.getString(c.getColumnIndex("linie")));  
        }


        c.moveToNext();
    }
    c.close();

    return ArrayList;
}

通过setonitemclicklistener,我获得单击位置的字符串。如何将此字符串用于新的字符串查询,如下所示:

lvD.setOnItemClickListener(new OnItemClickListener() { 
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  setContentView(R.layout.activity_clicked);
                  String newQuery = "SELECT ROWID _id, linie" + "FROM linie" + "WHERE name =" + lvD.getItemAtPosition(position).toString();                   
                  ArrayList<String> ClickedList = CursorToArray(getApplicationContext(), newQuery, new String[] {});
                  final ListView lvD = (ListView) findViewById(R.id.lvClicked);                 
                  ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.activity_clicked, R.id.tvClicked, ClickedList);
                  lvD.setAdapter(arrayAdapter);
                  lvD.setDividerHeight(8);

                 }
        });

我希望新文本位于同一个listview中 基本上,我想在新查询中使用第一个查询中的字符串。 我对java很陌生,所以请帮助我


共 (1) 个答案

  1. # 1 楼答案

    1. 您需要在查询中的名称值周围加引号,并在两者之间加空格,如下所示:

      String newQuery = "SELECT ROWID _id, linie" + " FROM linie " + 
                 " WHERE name = '" + lvD.getItemAtPosition(position).toString()+"'";
      
    2. 由于lvd是final,因此它可以直接在方法中使用。删除要查找的行以再次查找:

      //remove this line
      final ListView lvD = (ListView) findViewById(R.id.lvClicked);