我已经浏览了一下,可能是因为我不确定我在寻找什么,但我无法找到如何做一些我认为应该很容易使用android的东西。
我有一组要在屏幕上显示的数据。此数据是一个包含数据库密钥,名称和图像的类。
我目前正在将这些数据显示为ImageView和TextView。我遍历数组并向包含图像和文本的TableLayout添加一个新行。
我希望图片和文字都可以点击,然后更改为新活动。
此新活动需要知道所单击行的数据库键才能显示正确的数据。
这是我到目前为止所拥有的:
private void fillSuggestionTable(TableLayout tabSuggestions, Suggestion[] arrToAdd)
{
for(int i = 0; i < arrToAdd.length; i++)
{
/* Create a new row to be added. */
TableRow trSuggestion = new TableRow(this);
trSuggestion.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
/* Create objects for the row-content. */
ImageView imgDisplayPicture = new ImageView(this);
ImageHandler.loadBitmap(arrToAdd[i].strImageURL, imgDisplayPicture);
imgDisplayPicture.setLayoutParams(new LayoutParams(50,50));
TextView txtArtistName = new TextView(this);
txtArtistName.setText(arrToAdd[i].strName);
txtArtistName.setTextColor(Color.parseColor("#000000"));
/* Add data to row. */
trSuggestion.addView(imgDisplayPicture);
trSuggestion.addView(txtArtistName);
/* Add row to TableLayout. */
tabSuggestions.addView(trSuggestion, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
}
答案 0 :(得分:1)
要将额外数据传递给另一个Activity,您需要使用Intent.putExtra(名称,值)方法添加额外信息。
例如,发送意图:
Intent i = new Intent([pass info about next Activity here]);
i.putExtra("databaseKey", databaseKey);
startActivity(i);
要再次获取数据:
public void onCreate(Bundle savedInstance)
{
// Do all initial setup here
Bundle extras = getIntent().getExtras();
if (extras != null && extras.containsKey("databaseKey"))
{
int databaseKey = extras.getInt("databaseKey");
// Load database info
}
else
{
// No data was passed, do something else
}
}
编辑:要找出单击表格行的时间,您需要实现View.OnClickListener并为您使用的TableRows设置onClickListener。
例如:
/* Create a new row to be added. */
TableRow trSuggestion = new TableRow(this);
trSuggestion.setOnClickListener([listener]);
您唯一的问题是将View的ID与相关的数据库行ID相关联。 HashMap应该有帮助。
答案 1 :(得分:1)
你有没有理由使用TableView? ListView&amp;和CursorAdapter&amp;自定义{{3}},适配器可以处理从数据库到ListView行的转换。此时,启动一个知道数据库ID的新活动是微不足道的:
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
Intent i = new Intent(MyActivity.this, MyOtherActivity.class);
i.putExtra("database_id", id);
startActivity(i);
}
});
在MyOtherActivity中:
private int dbId;
protected void onCreate(Bundle savedInstanceState) {
//do stuff
dbId = getIntent().getIntExtra("database_id", -1); // the -1 is the default if the extra can't be found
}
答案 2 :(得分:0)
这是一个非常简单的程序。 This blog用简单的术语解释。