android - 如何获取 ListView 的选定索引或位置并传递到新的 Activity 中?

标签 android database listview position

我想获取 ListView 的点击索引/位置,然后将其传递给新 Activity 。 Bellow 是我所做的代码,但是当我运行我的代码时,我总是出错。预先感谢您的帮助。

MainAcitivity.Java

public static int hymnIndex;

private void setUpList() {
    setListAdapter(new ArrayAdapter<HymnClass>(this, android.R.layout.simple_list_item_1, HymnArrayTitle));
    listView = getListView();


     //Let’s set a message shown upon tapping an item
    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position,long id) {

            hymnIndex = position;
            Toast.makeText(getApplicationContext(),
             ((TextView) view).getText().toString(),
               Toast.LENGTH_SHORT).show();

                Intent selectedItem = new Intent(MainActivity.this, Content.class);

                startActivity(selectedItem);            

        }
    });
}


**Content.Java********************************

public class Content extends Activity{
    private SQLiteDatabase database;
    private static final String DB_NAME = "Akan_DB.db";
    private static final String TABLE_NAME = "Hymn";
    private static final String HYMN_ID = "_id";
    private static final String HYMN_NUMBER = "Hymn_number";
    private static final String TITLE = "Title";
    private static final String Content = "Content";
    private static final String Author = "Author";
    private ArrayList<HymnClass> HymnArray;
    TextView title_textview;
    TextView Content_texview;
    TextView author_textview;
    TextView text;

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

    setHymnTitle();


public class HymnClass {
            int hymnId;
            String hymnNumber;
            String title;
            String content;
            String Author;   

            @Override

               public String toString(){
                   return this.hymnNumber + "    " + this.title; 
               }  
        }


    private void setHymnTitle() {
String[] whereClause = {String.valueOf(MainActivity.hymnIndex)}; ///converted the int into a string because the where clause only accepts strings
           HymnArray = new ArrayList<HymnClass>();
          Cursor ListCursor  = database.query(TABLE_NAME, 
                                                new String[]{HYMN_ID,HYMN_NUMBER,TITLE,Content,Author}, 
                                                "HYMN_ID = ?", 
                                                whereClause, 
                                                null, 
                                                null, 
                                                TITLE);

            ListCursor.moveToFirst();
                if(!ListCursor.isAfterLast()) {
                    do {
                      HymnClass HymnData = new HymnClass();
                      HymnData.hymnNumber = ListCursor.getString(1);
                      HymnData.title = ListCursor.getString(2);
                      HymnData.content = ListCursor.getString(3);
                      HymnData.Author = ListCursor.getString(4);

                      HymnArray.add(HymnData);

                     // title_textview.setText(TITLE);

                    } while (ListCursor.moveToNext());
                }
                ListCursor.close();
            }

}

最佳答案

//让我们设置点击项目时显示的消息

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

       Intent selectedItem = new Intent(MainActivity.this, Content.class);
       selectedItem.putExtart("MySelectedPOS",position);
       startActivity(selectedItem);            
    }
});

在您的第二个 Activity 中,在创建方法中

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

    Bundel lBundel=getIntent().getExtrat();
    if(lBundel!=null){
    // get your passed value
     int lSelectedPosition=lBundel.getInt("MySelectedPOS");
    }

. . .

关于android - 如何获取 ListView 的选定索引或位置并传递到新的 Activity 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964888/

相关文章:

android - 检查本地服务的状态

php - codeigniter 负载模型使用获取参数

数据库设计问题

java - ListView 已停止

c# - 如何在 WPF 中更改每列项目的字体大小

java - 处理一个事件 : implement an interface or using inner class to handle the interface. 哪个更好

java - 分离android应用程序的功能和设计

database - 同一个表中具有不同值的重复字段

android - ListView 下面的 LinearLayour 不可见

java - 使用 Java 代码更改 FrameLayout 的顺序