簡體   English   中英

如何將工具欄添加到列表視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM