[英]how to add toolbar to listview
我正在嘗試將工具欄添加到android studio中的列表視圖中...我知道列表視圖不支持工具欄,我應該使用appcompatactivity。 我試圖更改列表視圖,但遇到很多錯誤...我查看了大約80個不同的示例,根本無法弄清我在做什么錯....如果有人使用過工具欄和列表視圖,我會愛您可以提供的任何其他幫助。
這是我當前的列表視圖代碼
package mypackage.android;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import mypackage.android.database.CommonNamesAdapter;
public class CommonNames extends ListActivity {
CommonNamesAdapter cnTable;
ListView cnListView;
Cursor c;
private static final int COMMON_NAME_ACTIVITY_START = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_names_list);
cnTable = new CommonNamesAdapter();
cnTable.open(getApplicationContext());
c = cnTable.fetchAllCommonNames();
startManagingCursor(c);
if(c!=null){
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.common_names_row,
c,
new String[] {c.getColumnName(1)},
new int[] {R.id.commonName});
setListAdapter(adapter);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
c.moveToPosition(position);
Intent i = new Intent(this, CommonNameDescription.class);
i.putExtra(CommonNamesAdapter.COMMON_NAME_ROWID, id);
i.putExtra(CommonNamesAdapter.COMMON_NAME, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME)));
i.putExtra(CommonNamesAdapter.COMMON_NAME_COUNT, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME_COUNT)));
startActivityForResult(i, COMMON_NAME_ACTIVITY_START);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
//Bundle extras = intent.getExtras();
switch(requestCode) {
default: break;
}
}
@Override
protected void onDestroy(){
super.onDestroy();
c.close();
cnTable.close();
}
}
這是我希望代碼看起來像的東西,但是它不起作用
package mypackage.android;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import mypackage.android.database.CommonNamesAdapter;
public class CommonNames extends AppCompatActivity {
CommonNamesAdapter cnTable;
ListView cnListView;
Cursor c;
private static final int COMMON_NAME_ACTIVITY_START = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_names_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
cnTable = new CommonNamesAdapter();
cnTable.open(getApplicationContext());
c = cnTable.fetchAllCommonNames();
startManagingCursor(c);
if(c!=null){
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.common_names_row,
c,
new String[] {c.getColumnName(1)},
new int[] {R.id.commonName});
setListAdapter(adapter);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
c.moveToPosition(position);
Intent i = new Intent(this, CommonNameDescription.class);
i.putExtra(CommonNamesAdapter.COMMON_NAME_ROWID, id);
i.putExtra(CommonNamesAdapter.COMMON_NAME, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME)));
i.putExtra(CommonNamesAdapter.COMMON_NAME_COUNT, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME_COUNT)));
startActivityForResult(i, COMMON_NAME_ACTIVITY_START);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
//Bundle extras = intent.getExtras();
switch(requestCode) {
default: break;
}
}
@Override
protected void onDestroy(){
super.onDestroy();
c.close();
cnTable.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean bRet=false;//set true is menu selection handled
switch (item.getItemId()) {
case R.id.action_settings_get_pro:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(getString(R.string.pro_version_url)));
startActivity(intent);
bRet=true;
break;
case R.id.action_settings_get_pro2:
Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(getString(R.string.pro_version_url)));
startActivity(intent2);
bRet=true;
break;
case R.id.action_settings_app_help:
Toast.makeText(this, this.getString(R.string.action_settings_app_help_text), Toast.LENGTH_SHORT).show();
bRet=true;
break;
case R.id.action_settings_about_app:
Toast.makeText(this, this.getString(R.string.action_settings_about_text), Toast.LENGTH_SHORT).show();
bRet=true;
break;
case R.id.action_settings_rate_app:
Intent intent3 = new Intent(Intent.ACTION_VIEW);
intent3.setData(Uri.parse(getString(R.string.rate_this_app_url)));
startActivity(intent3);
bRet=true;
break;
case R.id.action_settings_privacy_policy:
Intent intentprivacy = new Intent(Intent.ACTION_VIEW);
intentprivacy.setData(Uri.parse(getString(R.string.privacy_policy_url)));
startActivity(intentprivacy);
bRet=true;
break;
case R.id.action_settings_all_our_apps:
Intent intent4 = new Intent(Intent.ACTION_VIEW);
intent4.setData(Uri.parse(getString(R.string.all_our_apps_url)));
startActivity(intent4);
bRet=true;
break;
default:
bRet=super.onOptionsItemSelected(item);
}
return bRet;
}
}
任何幫助將不勝感激,我已經把我的頭發拉了好幾個小時了...
這樣做(使用AppCompatActivity)
public class CommonNames extends AppCompatActivity implements AdapterView.OnItemClickListener {
CommonNamesAdapter cnTable;
ListView cnListView;
Cursor c;
private static final int COMMON_NAME_ACTIVITY_START = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_names_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
cnListView= (ListView) findViewById(R.id.cnListView);
cnTable = new CommonNamesAdapter();
cnTable.open(getApplicationContext());
c = cnTable.fetchAllCommonNames();
startManagingCursor(c);
if(c!=null){
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.common_names_row,
c,
new String[] {c.getColumnName(1)},
new int[] {R.id.commonName});
cnListView.setAdapter(adapter);
cnListView.setOnItemClickListener(this);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
//Bundle extras = intent.getExtras();
switch(requestCode) {
default: break;
}
}
@Override
protected void onDestroy(){
super.onDestroy();
c.close();
cnTable.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean bRet=false;//set true is menu selection handled
switch (item.getItemId()) {
case R.id.action_settings_get_pro:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(getString(R.string.pro_version_url)));
startActivity(intent);
bRet=true;
break;
case R.id.action_settings_get_pro2:
Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(getString(R.string.pro_version_url)));
startActivity(intent2);
bRet=true;
break;
case R.id.action_settings_app_help:
Toast.makeText(this, this.getString(R.string.action_settings_app_help_text), Toast.LENGTH_SHORT).show();
bRet=true;
break;
case R.id.action_settings_about_app:
Toast.makeText(this, this.getString(R.string.action_settings_about_text), Toast.LENGTH_SHORT).show();
bRet=true;
break;
case R.id.action_settings_rate_app:
Intent intent3 = new Intent(Intent.ACTION_VIEW);
intent3.setData(Uri.parse(getString(R.string.rate_this_app_url)));
startActivity(intent3);
bRet=true;
break;
case R.id.action_settings_privacy_policy:
Intent intentprivacy = new Intent(Intent.ACTION_VIEW);
intentprivacy.setData(Uri.parse(getString(R.string.privacy_policy_url)));
startActivity(intentprivacy);
bRet=true;
break;
case R.id.action_settings_all_our_apps:
Intent intent4 = new Intent(Intent.ACTION_VIEW);
intent4.setData(Uri.parse(getString(R.string.all_our_apps_url)));
startActivity(intent4);
bRet=true;
break;
default:
bRet=super.onOptionsItemSelected(item);
}
return bRet;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
c.moveToPosition(position);
Intent i = new Intent(this, CommonNameDescription.class);
i.putExtra(CommonNamesAdapter.COMMON_NAME_ROWID, id);
i.putExtra(CommonNamesAdapter.COMMON_NAME, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME)));
i.putExtra(CommonNamesAdapter.COMMON_NAME_COUNT, c.getString(
c.getColumnIndexOrThrow(CommonNamesAdapter.COMMON_NAME_COUNT)));
startActivityForResult(i, COMMON_NAME_ACTIVITY_START);
}
}
並在布局文件中更改listview的id
<ListView
android:id="@+id/cmListView"
android:height="" ....../>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.