Как мне подключить запись базы данных к элементу в списке, который пользователь нажимает в Android? - PullRequest
0 голосов
/ 03 января 2019

У меня есть столбцы базы данных, подобные этой:

Имя | Статус

Testtraining1 |2

Testtraining2 |1

Testtraining3 |1

Список правильно работает для столбца «Имя».( Вот изображение этого )

public class list_training extends AppCompatActivity {

ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_training);

    listView = (ListView) findViewById(R.id.listView);
    downloadJSON("http://nrtix/stock_service.php");
}


private void downloadJSON(final String urlWebService) {

    class DownloadJSON extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
           // Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
            try {
                loadIntoListView(s);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        protected String doInBackground(Void... voids) {
            try {
                URL url = new URL(urlWebService);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                StringBuilder sb = new StringBuilder();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String json;
                while ((json = bufferedReader.readLine()) != null) {
                    sb.append(json + "\n");
                }
                return sb.toString().trim();
            } catch (Exception e) {
                return null;
            }
        }
    }
    DownloadJSON getJSON = new DownloadJSON();
    getJSON.execute();
}

private void loadIntoListView(String json) throws JSONException {
    JSONArray jsonArray = new JSONArray(json);
    final String[] stocks = new String[jsonArray.length()];
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject obj = jsonArray.getJSONObject(i);
        stocks[i] = obj.getString("Name"); //+ " " + obj.getString("Status");;
    }
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stocks);
    listView.setAdapter(arrayAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Toast.makeText(list_training.this,stocks[i],Toast.LENGTH_SHORT).show();

        }
    });
}
}

Но проблема в том, я хочу, чтобы приложение, если элемент нажимается, чтобы проверить в базе данных, если «Статус» вта же строка равна 1 или 2, и при условии, что для начала действия, для каждого результата, например:

пользователь нажимает Testtraining1

tmpstatus = 2; 
Status = tmpstatus;    

if (Status == 1)
startActivity(secondActivity)
else
startActivity(thirdActivity)

Я надеюсь, что вы можете помочь мне, я нашелв Интернете нет ничего, что решило бы мою проблему.

РЕДАКТИРОВАТЬ: Я решил проблему, инициализировав второй массив только с объектом "Status".

public void loadIntoListView(String json) throws JSONException {
        JSONArray jsonArray = new JSONArray(json);
        final String[] stocks = new String[jsonArray.length()];
        final String[] calc = new String[jsonArray.length()];
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject obj = jsonArray.getJSONObject(i);
            stocks[i] = obj.getString("Name");
            calc[i] = obj.getString("Status");
        }

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, stocks);
    listView.setAdapter(arrayAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            //Toast.makeText(list_training.this, calc[i],Toast.LENGTH_SHORT).show();
            //Intent intent = new Intent(list_training)
            //String value = (String)adapterView.getItemAtPosition(i);
            String status= calc[i];
            //Toast.makeText(list_training.this,status,Toast.LENGTH_SHORT).show();
            //Toast.makeText(getApplicationContext(), value, Toast.LENGTH_LONG).show();
            int istatus = Integer.parseInt(status);
            if (istatus == 1 ){
                Intent activity1 = new Intent(list_training.this, first_activity.class);
                startActivity(activity1);
            }
            else {
                Intent activity2 = new Intent(list_training.this, MainActivity.class);
                startActivity(activity2);

            }

        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...