Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在另一个活动中将列表项名称从listview获取到textview?_Java_Android_Database_Sqlite_Listview - Fatal编程技术网

Java 如何在另一个活动中将列表项名称从listview获取到textview?

Java 如何在另一个活动中将列表项名称从listview获取到textview?,java,android,database,sqlite,listview,Java,Android,Database,Sqlite,Listview,我正在创建一个应用程序,用户可以在其中输入自己的电影,在列表视图中显示,并从列表中随机挑选一部电影 现在我的问题是,当在listview中单击一个项目时,一个新的活动会打开op,其中单击的项目是textview中的标题。到目前为止,我可以从列表中获得要放映的第一名电影,但这显示了电影的标题无论我单击哪个列表项,如何根据单击的项目获得特定名称??提前谢谢 我的数据库类: package com.example; import android.content.ContentValues; impo

我正在创建一个应用程序,用户可以在其中输入自己的电影,在列表视图中显示,并从列表中随机挑选一部电影

现在我的问题是,当在listview中单击一个项目时,一个新的活动会打开op,其中单击的项目是textview中的标题。到目前为止,我可以从列表中获得要放映的第一名电影,但这显示了电影的标题无论我单击哪个列表项,如何根据单击的项目获得特定名称??提前谢谢

我的数据库类:

package com.example;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MovieDatabaseHelper {

    private static final String TAG = MovieDatabaseHelper.class.getSimpleName();

    // database configuration
    // if you want the onUpgrade to run then change the database_version
    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME = "mymoviedatabase.db";

    // table configuration
    private static final String TABLE_NAME = "movie_table";         // Table name
    private static final String MOVIE_TABLE_COLUMN_ID = "_id";     // a column named "_id" is required for cursor
    private static final String MOVIE_TABLE_COLUMN_TITLE = "movie_title";
    private static final String MOVIE_TABLE_COLUMN_YEAR = "production_year";

    private DatabaseOpenHelper openHelper;
    private SQLiteDatabase database;

    // this is a wrapper class. that means, from outside world, anyone will communicate with MovieDatabaseHelper,
    // but under the hood actually DatabaseOpenHelper class will perform database CRUD operations 
    public MovieDatabaseHelper(Context aContext) {

        openHelper = new DatabaseOpenHelper(aContext);
        database = openHelper.getWritableDatabase();
    }

    public void insertData (String aMovieTitle, String aMovieYear) {

        // we are using ContentValues to avoid sql format errors

        ContentValues contentValues = new ContentValues();

        contentValues.put(MOVIE_TABLE_COLUMN_TITLE, aMovieTitle);
        contentValues.put(MOVIE_TABLE_COLUMN_YEAR, aMovieYear);

        database.insert(TABLE_NAME, null, contentValues);
    }
    //Retrieves all the records 
    public Cursor getAllData () {

        String buildSQL = "SELECT * FROM " + TABLE_NAME + " ORDER BY " + MOVIE_TABLE_COLUMN_TITLE + " COLLATE NOCASE";

        Log.d(TAG, "getAllData SQL: " + buildSQL);

        return database.rawQuery(buildSQL, null);
    }


//    Retrieves specific record  
    public String getMovieTitle()
        {
        Cursor c =          
                database.query(TABLE_NAME,
                        new String[] { MOVIE_TABLE_COLUMN_TITLE }, null, null, null, null, null);
        if (c.moveToFirst())
            return c.getString(c.getColumnIndex(MOVIE_TABLE_COLUMN_TITLE ));
        else
            return "Nothing";

        }


//    Retrieves a random entry from the Database 
    public String getRandomMovie()
    {
    Cursor c = database.query(TABLE_NAME + " ORDER BY RANDOM() LIMIT 1",
            new String[] { MOVIE_TABLE_COLUMN_TITLE  }, null, null, null, null, null);

    if(c.moveToFirst())
      return c.getString(c.getColumnIndex(MOVIE_TABLE_COLUMN_TITLE ));
    else 
      return "nothing";
    }


    //Check if record exist

  //---deletes a particular record---
    public void delete(int _id) 
    {
        database.delete(TABLE_NAME, MOVIE_TABLE_COLUMN_ID+"="+_id, null);

    }

    //---updates a record---
    public boolean updateRecord(long _id, String movie_title) 
    {
        ContentValues args = new ContentValues();
        args.put(MOVIE_TABLE_COLUMN_TITLE, movie_title);
        return database.update(TABLE_NAME, args, MOVIE_TABLE_COLUMN_ID + "=" + _id, null) > 0;
    }



    // this DatabaseOpenHelper class will actually be used to perform database related operation 

    private class DatabaseOpenHelper extends SQLiteOpenHelper {

        public DatabaseOpenHelper(Context aContext) {
            super(aContext, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase sqLiteDatabase) {
            // Create your tables here

            String buildSQL = "CREATE TABLE " + TABLE_NAME + "( " + MOVIE_TABLE_COLUMN_ID + " INTEGER PRIMARY KEY, " +
                    MOVIE_TABLE_COLUMN_TITLE + " TEXT, " + MOVIE_TABLE_COLUMN_YEAR + " TEXT )";

            Log.d(TAG, "onCreate SQL: " + buildSQL);

            sqLiteDatabase.execSQL(buildSQL);
        }

        @Override
        public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
            // Database schema upgrade code goes here

            String buildSQL = "DROP TABLE IF EXISTS " + TABLE_NAME;

            Log.d(TAG, "onUpgrade SQL: " + buildSQL);

            sqLiteDatabase.execSQL(buildSQL);       // drop previous table

            onCreate(sqLiteDatabase);               // create the table from the beginning
        }
    }
}
我的listview类:

package com.example;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
//import android.widget.Button;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;

public class MyActivity extends Activity {

    private CustomCursorAdapter customAdapter;
    private MovieDatabaseHelper databaseHelper;
    private static final int ENTER_DATA_REQUEST_CODE = 1;
    private ListView listView;
    MediaPlayer mp;

    private static final String TAG = MyActivity.class.getSimpleName();

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dblist);

        databaseHelper = new MovieDatabaseHelper(this);
        final MediaPlayer mp = MediaPlayer.create(MyActivity.this, R.raw.cartoon015);
        listView = (ListView) findViewById(R.id.list_data);
        ImageButton okay = (ImageButton) findViewById(R.id.okay);


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


                Intent i = new Intent(MyActivity.this,IMDb.class);
                startActivity(i);

                Log.d(TAG, "clicked on item: " + position);
            }
        }
);


        okay.setOnClickListener
        (new View.OnClickListener()
            {
            public void onClick(View v)
                {
                    mp.start();
                    mp.setVolume((float) 0.3, (float) 0.3);
                    Intent intent = new Intent(MyActivity.this,MovieActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);

                }
            }
        );



        // Database query can be a time consuming task ..
        // so its safe to call database query in another thread
        // Handler, will handle this stuff for you <img src="http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif?m=1129645325g" alt=":)" class="wp-smiley">

        new Handler().post(new Runnable() {
            @Override
            public void run() {

                customAdapter = new CustomCursorAdapter(MyActivity.this, databaseHelper.getAllData());
                listView.setAdapter(customAdapter);
            }
        });
    }

    public void onClickEnterData(View btnAdd) {

        final MediaPlayer mp = MediaPlayer.create(MyActivity.this, R.raw.cartoon015);
        mp.start();
        mp.setVolume((float) 0.1, (float) 0.1);

        startActivityForResult(new Intent(this, EnterDataActivity.class), ENTER_DATA_REQUEST_CODE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ENTER_DATA_REQUEST_CODE && resultCode == RESULT_OK) {

            databaseHelper.insertData(data.getExtras().getString("tag_movie_title"), data.getExtras().getString("tag_movie_year"));

            customAdapter.changeCursor(databaseHelper.getAllData());
        }
    }
}

嗯,您需要的代码很多。但我可以告诉你步骤

为电影创建一个模型类,您可以在其中保存db记录 创建模型类的列表,然后当您单击该项时,您将获得记录在列表中的位置。 您的电影模型类必须具有getter和setter函数才能检索记录详细信息。
package com.example;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

public class IMDb extends Activity {

    TextView Movietitle;
    private MovieDatabaseHelper databaseHelper;
    MediaPlayer mp;




    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.imdb);

        Movietitle = (TextView) findViewById(R.id.movietitle);
        databaseHelper = new MovieDatabaseHelper(this);
        Button delete = (Button) findViewById(R.id.delete);


        Movietitle.setText( databaseHelper.getMovieTitle());


        } 

    }