gpt4 book ai didi

java - OnClickListener 用于从 ListView 行启动 Web View

转载 作者:行者123 更新时间:2023-12-01 15:19:01 24 4
gpt4 key购买 nike

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

主要 Activity

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

公共(public)类 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");

}}

谢谢。

最佳答案

您需要使用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 中的 Intent ,但这不是问题

关于java - OnClickListener 用于从 ListView 行启动 Web View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com