【问题标题】:How to make set onClickListener for listview with search? not with position如何通过搜索为列表视图设置 onClickListener?不带位置
【发布时间】:2017-04-03 11:05:42
【问题描述】:

大家好,我需要一个关于如何为listview 制作onClickListener 的答案,但没有位置的帮助。因为如果我在用户尝试搜索位置时借助位置创建OnClickListener 将会改变。请帮忙

看看我的代码:

package com.example.vukadinovic.mychefapp;

public class recepies extends Activity {
    ListView lv;
    SearchView sv;
    String[] recepies={"Čili Piletina\n"+ " pileće belo meso \n"+" crvena paprika \n"+" čili papričica \n"+" crveni pasulj \n"+" kukuruzni šećer \n"+" paradajz pelat\n"+" kisela pavlaka\n"+ " biljni začin\n "+ " biber\n "+" ulje ",
            "Prženija sa svinjskim butom\n" +" svinjski but"+" kiseli krastavčići , kisala paprika,tucana paprika,biljni začin,biber,origano ulje, so, lovorov list",
            "Peketići od integralnih palačinki\n" + "integralno brašno ,voda, soda bikarbona, ulje, kisela pavlaka, krastavac, paradajz, kikiriki",
            "Ćufte od mesa i karfiola (hrono recept)\n" + "mleveno meso, karfiol, crni luk, beli luk, peršun, belance, so, biber, kurkuma, ulje, tikvice, sok od paradajza",
            "Paprika punjena rižom i piletinom\n" +"paprika babura,belo meso,šargarepa,crni luk,pirinač,paradajz,sok od paradajza,biljnog začina,so,biber, kari,peršun, maslinovo ulje,",
            "Piletina u sosu od nara\n" +"belo meso,\n" + "soja sos,\n" + "biber,\n" + "kurkuma,\n" + "luk,\n" + "soka od nara,\n" + "đumbir,\n" + "pirinač,\n" + "čili ili tabasko sos,\n" + "bbq ili roštilj sos,"
    };

    ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recepies);
        registerClickCallback();
        lv=(ListView) findViewById(R.id.listView);
        sv=(SearchView) findViewById(R.id.searchView);
        adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,recepies);
        lv.setAdapter(adapter);

        sv.setOnQueryTextListener(new OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String text) {
                // TODO Auto-generated method stub
                return false;
            }
            @Override
            public boolean onQueryTextChange(String text) {


              String keywords[] = text.split("\\s+");

                for (String keyword : keywords)
                {
                    adapter.getFilter().filter(keyword);

                }
                return false;
            }
        });

    }
    private void registerClickCallback(){
        lv=(ListView) findViewById(R.id.listView);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
                    TextView textView= (TextView) viewClicked;
                    if(position==0){
                        goToRecepie1();
                    }else if(position==1){
                        goToRecepie2();
                    }else if(position==2){
                        goToRecepie3();
                    }else if(position==3){
                        goToRecepie4();
                    }else if(position==4){
                        goToRecepie5();
                    }else if(position==5){
                        goToRecepie6();
                    }
            }
        });
    }

    private void goToRecepie6() {
        Intent intent = new Intent(this, Recepie6.class);

        startActivity(intent);
    }

    private void goToRecepie5() {
        Intent intent = new Intent(this, Recepie5.class);

        startActivity(intent);
    }

    private void goToRecepie4() {
        Intent intent = new Intent(this, Recepie4.class);

        startActivity(intent);
    }

    private void goToRecepie3() {
        Intent intent = new Intent(this, Recepie3.class);

        startActivity(intent);
    }

    private void goToRecepie2() {
        Intent intent = new Intent(this, Recepie2.class);

        startActivity(intent);
    }

    private void goToRecepie1() {
        Intent intent = new Intent(this, Recepie1.class);

        startActivity(intent);
    }
}

【问题讨论】:

  • 为什么不创建一个goToRecipe(int which) 方法,然后向一个动态活动发起一个意图,并通过捆绑意图将信息传递给该活动?
  • 搜索custom array adapter

标签: java listview android-studio onclicklistener items


【解决方案1】:

要从更新的 ListView 中获取项目,您需要使用“parent.getItemAtPosition(position)”

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

                String item = (String) parent.getItemAtPosition(position);

            }
        }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多