【问题标题】:How to load an specific activity (multiple intent) on filter ListView- Item-Click?如何在过滤器 ListView-Item-Click 上加载特定活动(多个意图)?
【发布时间】:2014-12-04 09:54:24
【问题描述】:

没有错误,但是当我单击列表视图的一项时,没有任何反应。我有10多个项目。并参加不同的活动。任何的想法?我是 eclipse 的初学者,也是 java 的。

示例: 1.Niat(ListView-OnItemClickListener)会去NiatActivity.class 2.Lafaz(ListView-OnItemClickListener)会去LafazActivity.class

这是我的代码。提前致谢。

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class MainTwoActivity extends Activity {

    // List view
    private ListView lv;

    // Listview Adapter
    ArrayAdapter<String> adapter;

    // Search EditText
    EditText inputSearch;

    // ArrayList for Listview
    ArrayList<HashMap<String, String>> productList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_two);

        // Listview Data
        final String products[] = { "Niat",
                "Lafaz", "Solat" };

        lv = (ListView) findViewById(R.id.list_view);

        inputSearch = (EditText) findViewById(R.id.inputSearch);

        // Adding items to listview
        adapter = new ArrayAdapter<String>(this, R.layout.list_item,
                R.id.product_name, products);
        lv.setAdapter(adapter);

        /**
         * Enabling Search Filter
         * */

        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2,
                    int arg3) {
                // When user changed the Text
                MainTwoActivity.this.adapter.getFilter().filter(cs);
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
            }

        });

        lv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // if(position == 1)
                String openClass = adapter.getItem(position);
                if (openClass.equals("Niat")) {
                    // code specific to first list item
                    Intent myIntent = new Intent(view.getContext(),
                            NiatActivity.class);
                    startActivity(myIntent);
                }

                else if (openClass.equals("Lafaz")) {
                    Intent myIntent1 = new Intent(view.getContext(),
                LafazActivity.class);
                    startActivity(myIntent1);

                }
            }

        });

    }
}

【问题讨论】:

  • 如果您想在列表项上进行不同的活动,请单击使用 Switch 语句作为其位置。
  • @PiyushGupta 已经 switch 语句,但仍然无法正常工作
  • 你想在列表项点击时打开多个活动?

标签: java android eclipse


【解决方案1】:

使用反射更好,但你也可以使用 Hashmap HashMap的使用

  HashMap<String, Class>hashMap=new HashMap<String, Class>();


  hashMap.put("Niat",NiatActivity.class);
  hashMap.put("Lafaz",LafazActivity.class);
  hashMap.put("Solat",SolatActivity.class);
   lv.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
   String openClass = adapter.getItem(position);
   Intent myIntent1 = new Intent(MainTwoActivity.this,
              hashMap.get(openClass));
            startActivity(myIntent1);
  }

【讨论】:

    【解决方案2】:

    Ma当你开始一个新的活动时你应该使用

    Intent myIntent = new Intent(MainTwoActivity.this ,NiatActivity.class);
    

    View getContext() 不包含应用程序的完整上下文。阅读here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多