Как получить значение определенного TextView внутри ListView в Android?

#android #listview

#Android #listview

Вопрос:

В моем приложении мне нужно переходить от одного действия к другому в зависимости от выбранного списка. В каждом listview будет три textview, а именно: Emp_id, Emp_name, Emp_address , поэтому всякий раз, когда я нажимаю на определенный список, который должен перейти к следующему действию соответствующего Emp_id. Итак, здесь я хочу перехватить Emp_id, чего я не могу. Я много пробовал, но получил только первый Emp_id, а не список, на который я нажал.

код:

 ArrayList<HashMap<String, String>> mylist2 = new ArrayList<HashMap<String, String>>();

        try{
            JSONObject jObj = new JSONObject(Mydetail);
            JSONArray data = jObj.getJSONArray("mydata");

            for(int i=0;i<data.length();i  ){                       
                HashMap<String, String> map = new HashMap<String, String>();    
                JSONObject e = data.getJSONObject(i);

                map.put("id", String.valueOf(i));
                map.put("Eid", ""   e.getString("E_id"));
                map.put("Ename", ""   e.getString("E_name"));
                map.put("Eaddress", ""   e.getString("E_address"));
                mylist2.add(map);
            }       
        }catch(JSONException e)        {
             Log.e("log_tag", "Error parsing data " e.toString());
        }

         ListAdapter adapter = new SimpleAdapter(this, mylist2 , R.layout.datalist,
                                  new String[] { "Eid", "Ename", "Eaddress" }, 
                                  new int[] {  R.id.TextView1,R.id.TextView2e,R.id.TextView3 });
                                  setListAdapter(adapter);


        final ListView lv = getListView();
        lv.setTextFilterEnabled(true);  
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
                @SuppressWarnings("unchecked")
                HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);                   
                //String val = o.get("id");

                Pnm = (TextView)findViewById(R.id.TextView1);
                 String str = ((TextView)Pnm).getText().toString();


                Toast.makeText(projects.this, str,Toast.LENGTH_LONG).show();

                Intent newActivitySecond = new Intent(projects.this, modules.class);     
                projects.this.startActivity(newActivitySecond);


            }
        });
  

Спасибо

Ответ №1:

Попробуйте вот так:

  ListView lv_ArchivePartylist;

    lv_ArchivePartylist = (ListView)findViewById(R.id.archive_ListView01);
            lv_ArchivePartylist.setOnItemClickListener(new OnItemClickListener()
                {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
                    // TODO Auto-generated method stub
                    String message = view.findViewById(R.id.txt_box1).getText().toString;
                    Toast.makeText(Activityname.this, message, Toast.LENGTH_SHORT).show();

    }
    }

    });
  

Ответ №2:

попробуйте это

 lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            @SuppressWarnings("unchecked")
            HashMap<String, String> o = (HashMap<String, String>) mylist2.get(position);                   

             String Emp_id = o.get("Eid");
             //use this Emp_id


        }
    });
  

Ответ №3:

Вы должны использовать set onclicklistener для всех элементов внутри ListView. Я создал listview. установите адаптер для listview. Мой адаптер отвечает за отображение каждого элемента listview. итак, внутри getView() Я назначу onclicklistener всем элементам, для которых я хочу получить событие click

Пример

 public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null){
            vi = inflater.inflate(R.layout.item, null);
            holder=new ViewHolder();
            holder.text=(TextView)vi.findViewById(R.id.text);;
            holder.image=(ImageView)vi.findViewById(R.id.image);
            vi.setTag(holder);
        }
        else
            holder=(ViewHolder)vi.getTag();

        holder.text.setText("item " position);
        holder.image.setTag(data.get(position));
        holder.image.setOnClickListener(this);
        holder.text.setOnClickListener(this);
        imageLoader.DisplayImage(data.get(position), activity, holder.image);
        return vi;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        System.out.println("...clicked view is...." arg0);
    }
  

Комментарии:

1. Я предоставил код (выше), который я фактически использую сейчас, поэтому, изменив существующий код, я могу это исправить.