Как получить целочисленное значение индекса Arraylist - PullRequest
0 голосов
/ 08 января 2019

Как получить целочисленное значение для индекса элемента массива, если вы щелкнете по пятому номеру массива, тогда целое значение a=5 Как я могу это сделать?

ArrayList a;
al = new ArrayList();

for(int i = 0; i < linksArray.length(); ++i) {
    a.add(linksArray.getJSONObject(i).get("fullText"));
}

Я добавил свои значения json в "a"

adapter = new ArrayAdapter(this,R.layout.activity_listview_2, a);
listviewMakale.setAdapter(adapter);

и затем у меня есть функция щелчка списка, и я хочу, если щелкнуть пятый элемент int indexItem = 5; Я не хочу, чтобы с помощью списка слушателей было выбрано значение позиции прослушивателя, я хочу создать индекс индекса.

весь код активности, основная проблема в том, что пользователи что-то ищут в тексте редактирования

  ListView listviewMakale;
    ArrayList a22 = new ArrayList();
    ArrayList al;
  private  ArrayAdapter adapter;
 private  EditText ara;

    String url = "myurl";

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

        ActionBar actionBar = getSupportActionBar();
        actionBar.setIcon(R.mipmap.ic_launcher);
        actionBar.setDisplayShowHomeEnabled(true);

        listviewMakale = (ListView)findViewById(R.id.listviewMakale);


        StringRequest request = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String string) {
                parseJsonData(string);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(getApplicationContext(), "Hata-Tekrar Deneyiniz!!", Toast.LENGTH_SHORT).show();

            }
        });

  StringRequest request2 = new StringRequest(url, new Response.Listener<String>() {
            @Override
            public void onResponse(String string) {
                parseJsonDataLinks(string);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Toast.makeText(getApplicationContext(), "Hata-Tekrar Deneyiniz!!", Toast.LENGTH_SHORT).show();

            }
        });

        //baslık için
        RequestQueue rQueue = Volley.newRequestQueue(makale.this);
        rQueue.add(request);

        //linkler için
        RequestQueue rQueue2 = Volley.newRequestQueue(makale.this);
        rQueue2.add(request2);



    }


    void parseJsonData(String jsonString) {
        try {
            JSONObject object = new JSONObject(jsonString);
            JSONArray linksArray = object.getJSONArray("makale");
                 al = new ArrayList();

            for(int i = 0; i < linksArray.length(); ++i) {
                al.add(linksArray.getJSONObject(i).get("fullText"));
            }

            adapter = new ArrayAdapter(this,R.layout.activity_listview_2, al);
            listviewMakale.setAdapter(adapter);

            EditText ara=(EditText) findViewById(R.id.ara);


            listviewMakale.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



                    final   String linkler="url"+a22.get(position);

                    Toast.makeText(makale.this,String.valueOf(al.indexOf(position)),Toast.LENGTH_SHORT).show();
                    AlertDialog.Builder builder = new AlertDialog.Builder(makale.this);
                    builder.setTitle("Makale");
                    builder.setMessage("");
                    builder.setNegativeButton("İPTAL", new DialogInterface.OnClickListener(){
                        public void onClick(DialogInterface dialog, int id) {


                        }
                    });

                    builder.setPositiveButton("TAMAM", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {

                            Intent intent = new Intent(Intent.ACTION_VIEW);
                            intent.setDataAndType(Uri.parse(linkler), "text/html");
                            startActivity(intent);

                        }
                    });


                    builder.show();
                    }
            });

            ara.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                makale.this.adapter.getFilter().filter(charSequence);
                }

                @Override
                public void afterTextChanged(Editable editable) {

                }
            });

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

    //linklere erişiyoruz
        void parseJsonDataLinks (String jsonString2) {
            try {
                JSONObject object2 = new JSONObject(jsonString2);
                JSONArray linksArray2 = object2.getJSONArray("makale");


                for(int j = 0; j < linksArray2.length(); ++j) {
                    a22.add(linksArray2.getJSONObject(j).get("link"));
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }

    }

}

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Вы можете получить позицию щелчка на ListView OnItemClickListener. И эта позиция будет вашей ArrayList позицией. Вы можете легко получить значение для этой позиции из ArrayList.

your_list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
        String full_text = adapterView.getAdapter().getItem(pos);
        Log.w("Clicked Row", "Data on position " +  pos + " is " + full_text);
    }
});

Вы также можете использовать String full_text = your_array_list.get(pos); вместо String full_text = adapterView.getAdapter().getItem(pos);. Оба вернут вам одно и то же значение.

0 голосов
/ 08 января 2019

Как только вы свяжете ArrayList с ListView, он не изменит их положение, пока вы не обновите или не перезагрузите его.

Таким образом, вы можете получить значения из ArrayList по нажатой позиции ListView.

Вы можете сделать как.

arrayList.get(index);

Он вернет объект, который вы передали.

0 голосов
/ 08 января 2019

Вы можете получить нужный товар непосредственно от адаптера, например:

adapter.getItem(position)

позиция - индекс позиции.

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