我是新來android和java,我工作在這個android項目,我有一個ListView
電影(名稱字符串,類型字符串,年 - 詮釋)。我想在將它傳遞給另一個activity
後拆分該物品。如何在另一個意圖中拆分傳遞的ListView項目?
我的電影型號:
public class Movie
{
// property to help us handle the data
private int id;
private String name;
private String genre;
private int year;
//Getters and Setters of the properties
public long getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getGenre()
{
return genre;
}
public void setGenre(String genre)
{
this.genre = genre;
}
public int getYear()
{
return year;
}
public void setYear(int year)
{
this.year = year;
}
public String toString()
{
return name + ", " + genre + ", " + year;
}
//----------Start--------- Here we have defined the table contents (basically a blueprint of the table Movie) -------------------------------------
public static final String TABLE_NAME = "movie";
public static final String COlUMN_ID = "id";
public static final String COlUMN_NAME = "make";
public static final String COlUMN_GENRE = "model";
public static final String COlUMN_YEAR = "year";
//----------------------END----------------------------------------------------------------------------------------------------------------//
}
我創建電影活動:
public class CreateMovieActivity extends AppCompatActivity
{
MoviesRepository moviesRepository;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_movie);
moviesRepository = new MoviesRepository(this);
moviesRepository.open();
}
public void onClickSaveMovie(View v)
{
Button buttonAdd = (Button) v;
EditText editTextName = (EditText) findViewById(R.id.editTextName);
EditText editTextGenre = (EditText) findViewById(R.id.editTextGenre);
EditText editTextYear = (EditText) findViewById(R.id.editTextYear);
Movie movie = new Movie();
movie.setName(editTextName.getText().toString());
movie.setGenre(editTextGenre.getText().toString());
movie.setYear(Integer.parseInt(editTextYear.getText().toString()));
moviesRepository.Create(movie);
Button buttonCreate = (Button) v;
startActivity(new Intent(getBaseContext(),MainActivity.class));
}
}
我的電影庫:
public class MoviesRepository
{
private SQLiteDatabase db;
private MyDBHelper myDBHelper;
private String [] MovieAllColumns ={Movie.COlUMN_ID,
Movie.COlUMN_NAME,
Movie.COlUMN_GENRE,
Movie.COlUMN_YEAR};
public MoviesRepository(Context context)
{
myDBHelper = new MyDBHelper(context);
}
public void open() throws SQLException
{
//Open connection to write data
db = myDBHelper.getWritableDatabase();
}
public void close()
{
//Close connection to database
db.close();
}
private Movie cursorToMovie (Cursor cursor)
{
Movie movie = new Movie();
movie.setId(cursor.getInt(0));
movie.setName(cursor.getString(1));
movie.setGenre(cursor.getString(2));
movie.setYear(cursor.getInt(3));
return movie;
}
public List<Movie> getAllMovies()
{
open();
List<Movie> movieList = new ArrayList<>();
Cursor cursor = db.query(Movie.TABLE_NAME, MovieAllColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
Movie movie = cursorToMovie(cursor);
movieList.add(movie);
cursor.moveToNext();
}
cursor.close();
close();
return movieList;
}
public void Create(Movie movie)
{
open();
//helps you insert values to the table
ContentValues values = new ContentValues();
//Put method - first column; what column do you want to be storing this ind. Second; what is the value you want to put ind
values.put(Movie.COlUMN_NAME, movie.getName());
values.put(Movie.COlUMN_GENRE, movie.getGenre());
values.put(Movie.COlUMN_YEAR, movie.getYear());
db.insert(Movie.TABLE_NAME, null, values);
close();
}
public void Delete(Movie movie)
{
open();
//Deletes Movie by id
db.delete(Movie.TABLE_NAME, Movie.COlUMN_ID + " = " + movie.getId(), null);
db.close();
}
}
當我在項目上點擊ListView
它會通過價值到另一個Activity
我可以打印出來(做烤麪包)。
這是我通過該項目的其他意圖:
public void Select()
{
moviesRepository = new MoviesRepository(this);
moviesRepository.open();
final Movie movie;
final ListView listView = (ListView) findViewById(R.id.ListViewMovie);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
final String details = listView.getAdapter().getItem(position).toString();
Intent i = new Intent(getApplicationContext(), MovieDetailsActivity.class);
i.putExtra("key", details);
startActivity(i);
}
});
}
但我怎麼從ListView
分裂傳遞的值,因此它是有道理的。
這是我想它的三個值,電影名稱,電影類型和年份劃分:
public class MovieDetailsActivity extends AppCompatActivity
{
TextView movieName;
TextView movieGenre;
TextView movieYear;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.movie_details);
getDetails();
}
public void getDetails()
{
movieName = (TextView) findViewById(R.id.textViewMovieName);
movieGenre = (TextView) findViewById(R.id.textViewMovieGenre);
movieYear = (TextView) findViewById(R.id.textViewMovieYear);
String data = getIntent().getExtras().getString("key");
Toast.makeText(this, data, Toast.LENGTH_LONG).show();
}
}
現在我只是做舉杯與傳遞的項目
我想通了,但我不知道如何可以從數據庫(SqlLite)將數據傳遞給其他意圖。或者我怎樣才能比較發送字符串對象與我的數據庫中的數據?這樣我可以獲得該行的所有列。 –
正如我所說,你爲此創建一個經理類。您必須使用數據庫中的數據初始化此經理。然後,您可以將活動中的密鑰發送給另一個人,就像您一樣。在第二個活動中,您可以要求經理爲傳遞的密鑰獲取正確的電影。您的經理和您的數據庫此時具有相同的數據。這就是我在我的應用程序中所做的。 – beeb