0

搜索 api 正在向我返回一些元数据以及 URL“eventURL”。我将数据放在列表视图中,每一行都包含一些数据和一个唯一的 URL。我希望当用户点击列表视图中的行时,该唯一的 URL 应该在 webview 中打开。我已经为它创建了一个 WebViewActivity,我在实现 onClickListener 时遇到问题。

主要活动

public class MainActivity extends Activity {

//private EditText m_search_text;
private EditText m_zip;
private ListView m_search_results;
private Button m_search_btn;
private JSONArray m_results; 
private LayoutInflater m_inflater;
private InputMethodManager m_ctrl;
private Spinner m_radius;
private Spinner m_activity_selector;
public static int radius = 0;
public static String activities;



static final private int EXIT_ID = Menu.FIRST;



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
   // m_search_text = (EditText) findViewById(R.id.search_text);
    m_zip = (EditText) findViewById(R.id.zip);
    m_search_btn = (Button) findViewById(R.id.search_button);
   // m_search_results = (ListView) findViewById(R.id.lview);
    m_search_btn .setOnClickListener(go_handler);

    m_ctrl = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    m_inflater = LayoutInflater.from(this);
    addListenerOnSpinnerItemSelection();
    addListenerOnSpinner1ItemSelection();

  m_search_results = (ListView)findViewById(R.id.lview);

}

public void addListenerOnSpinnerItemSelection() {
    m_radius = (Spinner) findViewById(R.id.spinner);
    m_radius.setOnItemSelectedListener(new CustomOnItemSelectedListener());
  }

public void addListenerOnSpinner1ItemSelection(){
    m_activity_selector = (Spinner) findViewById(R.id.spinner1);
    m_activity_selector.setOnItemSelectedListener(new ActivitySelectedListener());
    }

@Override
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);

    menu.add(0, EXIT_ID, 0, R.string.exit);
    return true;
    }
@Override
public boolean onOptionsItemSelected (MenuItem item){

    switch (item.getItemId()){
    case EXIT_ID:
        finish();
        return true;

    }

    return super.onOptionsItemSelected(item);

}



OnClickListener go_handler = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        m_ctrl.hideSoftInputFromWindow(m_zip.getWindowToken(), 0);

        //String searchText = Uri.encode(m_search_text.getText().toString());
        String zip = Uri.encode(m_zip.getText().toString());

        new SearchTask().execute("?k=Fall+Classic" + "&m=meta:channel=" + activities + "&l="+ zip + "&r=" + radius);
        // Show a toast showing the search text
        Toast.makeText(getApplicationContext(),
                getString(R.string.search_msg) + " " + 
                activities, Toast.LENGTH_LONG).show();
    }
};

private class SearchTask extends AsyncTask<String, Integer, String>
{

    ProgressDialog dialog;

        @Override
        protected void onPreExecute() {

            dialog = ProgressDialog.show(MainActivity.this,"","Please Wait...");

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            try {
                String result = ActiveHelper.download(params [0]);
                return result;
            } catch (ApiException e) {
                e.printStackTrace();
                Log.e("alatta", "Problem making search request");
            }
            return "";
        }
        @Override
        protected void onPostExecute(String result) {
            dialog.hide();
            try {
                JSONObject obj = new JSONObject(result);
                m_results = obj.getJSONArray("_results");
                if (m_results == null ||m_results.length() == 0)
                {
                    Toast.makeText(getApplicationContext(),
                            "No Results found for " + activities, 
                            Toast.LENGTH_LONG).show();

                }
                else
                    m_search_results.setAdapter(new JSONAdapter(getApplicationContext()));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

private class JSONAdapter extends BaseAdapter
{
    public JSONAdapter(Context c){

    }

    public int getCount() 
    {
    return  m_results.length();
        }

    public Object getItem(int arg0){
        return null;
    }

    public long getItemId(int pos){
        return pos;

    }

    public View getView(int pos, View convertView, ViewGroup parent) {
        View tv;
        TextView t;

        if (convertView == null)
            tv = m_inflater.inflate (R.layout.item, parent, false);
        else
            tv = convertView;
        try {
            /* For each entry in the ListView, we need to populate 
             * its text and timestamp */
            t = (TextView) tv.findViewById(R.id.text);
            JSONObject obj = m_results.getJSONObject(pos);

            t.setText (obj.getString("title").replaceAll("\\<.*?\\>", ""));

            t = (TextView) tv.findViewById(R.id.created_at);
            JSONObject meta = obj.getJSONObject("meta");
            t.setText ("When:" + "\t"+meta.getString("startDate")+"\n"+"Location:" +"\t" +meta.getString("location")+"\n" +"More Info:"+"\t" +meta.getString("eventURL")+"\n");


        } catch (JSONException e) {

            Log.e("alatta", e.getMessage());
        }
        return tv;
    }
}}

WebViewActivity

公共类 WebViewActivity 扩展 MainActivity {

    private WebView webView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);

        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("url");

    }}

谢谢。

4

1 回答 1

1

您需要使用 OnItemClickListener:

MainActivity implements OnItemClickListener {

onCreate() {
m_search_results.setOnItemClickListener(this);

制作这个方法:

onItemClick(AdapterView<?> parent, View view, int position, long id) {

url = JSON.getHowever(position);

//get the intent, load the url, and launch the activity

}

您还需要在 WebViewActivity 中处理意图,但这不是问题所在

于 2012-06-27T23:11:20.140 回答