0

New android programmer is here. First : I dont know many things about list view and as I found out , its complicated to work with it.

So , I want to put my database data (Contains Id , Name) to a listview and get the Id of the item is clicked.

I have searched many but i just found this :

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class test extends Activity {

    String[] wordlist = new String[] { "a", "b", "c" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        wordlist[2] = "abds";

        ListView list = new ListView(this);
        list.setAdapter((ListAdapter) new MyAdapter(test.this, wordlist));

        list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                Object entry= parent.getItemAtPosition(position);

                Toast.makeText(test.this, entry.toString(), Toast.LENGTH_SHORT).show();

            }
        });

        setContentView(list);
    }

    private class MyAdapter extends ArrayAdapter<String> {

        public MyAdapter(Context context, String[] strings) {
            super(context, -1, -1, strings);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            LinearLayout listLayout = new LinearLayout(test.this);
            listLayout.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT,
                    AbsListView.LayoutParams.WRAP_CONTENT));
            listLayout.setId(5000);

            TextView listText = new TextView(test.this);
            listText.setId(5001);

            listLayout.addView(listText);

            listText.setText(super.getItem(position));

            return listLayout;
        }
    }
}

Just i can show strings , not Id.

ehsan
  • 3
  • 1
  • 3

1 Answers1

0

Use SimpleCursorAdapter to populate ListView with data from database, for example - https://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/ (first link from google).

How to get the item id in an onItemClick handler

Read more about ListView and Adapters, your code is awful )

Community
  • 1
  • 1
Suleiman
  • 1,003
  • 2
  • 15
  • 29