Devrath
Devrath

Reputation: 42824

Getting the TextView from the adapter of listview in android

What I have: I have text View in every row of a list view

What I am trying to do:


CODE::

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

        final ListView listviewone = (ListView) findViewById(R.id.listviewone);
        listviewone.setAdapter(mAdapterOne);

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

                Log.d("", "");                  

            }
        });
    }

XML-of adapter

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:textColor="#000" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:scaleType="centerCrop"
        android:padding="5dp"
        android:src="@drawable/img" />

     <ImageView
        android:id="@+id/imageLine"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/line" />



</LinearLayout>

Upvotes: 1

Views: 3300

Answers (6)

Kaushik
Kaushik

Reputation: 6162

Use a interface for click event on that TextView

Code snippet

interface to handle click event

public interface ListItemBtnClickInterface {

    public void listItemBtnClickListener(Object obj, int viewId, String value);
}

I'm using ArrayAdapter

code for Constructor of Adapter

public AddExpTypeAdapter(Context context, int resource,
        List<ExpenseTypeInfo> objects, ListItemBtnClickInterface _interface) {
    super(context, resource, objects);
    // TODO Auto-generated constructor stub
    _context = context;
    layoutId = resource;
    dataList = objects;
    this._interface = _interface;
    notifyDataSetChanged();
}

code for TextView's click in Adapter after initialization and setting Text

vieweHolder.urView.setTag(position);
vieweHolder.urView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Object data = v.getTag();
            if(data != null) {
                String value = vieweHolder.urView.getText().toString();
                _interface.listItemBtnClickListener(data, v.getId(), value);
            }
        }
    });

code for Setting up adapter of ListView in Activity

addExpTypeAdapter = new AddExpTypeAdapter(AddExpTypeActivity.this, 
            R.layout.row_add_type, expTypeList, new ListItemBtnClickInterface() {

                private int clickedPosition;

                @Override
                public void listItemBtnClickListener(Object obj, int viewId, String value) {
                        // TODO Auto-generated method stub
                        clickedPosition = Integer.parseInt(obj.toString());

                        switch (viewId) {
                        case R.id.urView:
                            Log.d("Clicked TextView's Value ===> " , value);
                            break;

                        default:
                            break;
                        }
                    }
                });
        typeListView.setAdapter(addExpTypeAdapter);

Upvotes: 0

iMDroid
iMDroid

Reputation: 2128

If you want the value set on textview then try it this way..

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

               TextView mText  = (TextView) view
                    .findViewById(R.id.title);      

               String value= mText.getText().ToString().trim();            

            }
        });

Upvotes: 1

Akash Moradiya
Akash Moradiya

Reputation: 3322

try like this,

 private String getName(int pos){
                View view = listviewone.getAdapter().getView(pos, null, listviewone);
                TextView name = (TextView) view.findViewById(R.id.title);

                return name.getText().ToString();
    }

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

                    Log.d("NAME", getName(position));                  

                }
            });

hope it will help you

Upvotes: 0

danielz
danielz

Reputation: 1767

((TextView) view.findViewById(R.id.title).getText().toString()

However I would suggest you to get the text from the adapter itself, since the adapter will be used to populate the ListView.

Upvotes: 1

user4272989
user4272989

Reputation:

view is the list item, so you can do

String str =(String) ((TextView) view.findViewById(R.id.txt)).getText();

Upvotes: 4

Hareshkumar Chhelana
Hareshkumar Chhelana

Reputation: 24848

Get name at particular list item from ListView data holder :

Example :

ArrayList<HashMap<String,String>> listData= new ArrayList<HashMap<String, String>>();
HashMap<String,String> row1=  new HashMap<String, String>();
row1.put("name","AAA");
listData.add(row1);

listviewone.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
          Log.d("Name :", listData.get(position).get("name"));                  
     }
});

Note : listData use for ListView data holder which is pass adapter to build ListView item.

Upvotes: 0

Related Questions