我要做的是从填充的listView项目中在主活动的webView中加载URL。我不知道如何做到这一点,我正在逐步学习,一旦我学会了这个步骤(在这个问题中),我一直在努力使其适应用数据库填充listView。
单击列表项对象时,需要使用getURL变量将链接加载到.main活动中的mWebView。 (合理??)
Thanx对你的帮助!!
以下是我到目前为止:
listView活动(ACList.java):
public class ACList extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.ac_list);
ArrayList<SearchResult> searchResults = GetSearchResults();
final ListView lv1 = (ListView) findViewById(R.id.listItems);
lv1.setAdapter(new MyCustomBaseAdapter(this, searchResults));
lv1.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
Object o = lv1.getItemAtPosition(position);
SearchResult fullObject = (SearchResult)o;
Toast.makeText(ACList.this, "You have chosen: " + " " + fullObject.getLabel(), Toast.LENGTH_LONG).show();
/** -- Here is the Class I intend to start with the specified URL to the selected item
Intent i = new Intent(ACList.this, main.class);
i.putExtra("url", fullObject.getURL());
startActivity(i);
**/
}
});
}
private ArrayList<SearchResult> GetSearchResults()
{
ArrayList<SearchResult> results = new ArrayList<SearchResult>();
SearchResult sr1 = new SearchResult();
sr1.setLabel("The Lable");
sr1.setListTitle("This is the Title");
sr1.setCaption("This is what its about");
sr1.setURL("http://www.somesite.com/index.html");
results.add(sr1);
}
}
这是我的适配器(MyCustomBaseAdapter):
public class MyCustomBaseAdapter extends BaseAdapter {
private static ArrayList<SearchResult> searchArrayList;
private LayoutInflater mInflater;
public MyCustomBaseAdapter(Context context, ArrayList<SearchResult> results) {
searchArrayList = results;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return searchArrayList.size();
}
public Object getItem(int position) {
return searchArrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.txtLabel = (TextView) convertView.findViewById(R.id.label);
holder.txtListTitle = (TextView) convertView.findViewById(R.id.listTitle);
holder.txtCaption = (TextView) convertView.findViewById(R.id.caption);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtLabel.setText(searchArrayList.get(position).getLabel());
holder.txtListTitle.setText(searchArrayList.get(position).getListTitle());
holder.txtCaption.setText(searchArrayList.get(position).getCaption());
return convertView;
}
static class ViewHolder {
TextView txtLabel;
TextView txtListTitle;
TextView txtCaption;
}
}
...和我的SearchResult.java:
public class SearchResult
{
private String label = "";
private String listTitle = "";
private String caption = "";
private String listURL = "";
public void setLabel(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public void setListTitle(String listTitle) {
this.listTitle = listTitle;
}
public String getListTitle() {
return listTitle;
}
public void setCaption(String caption) {
this.caption = caption;
}
public String getCaption() {
return caption;
}
public void setURL(String listURL) {
this.listURL = listURL;
}
public String getURL() {
return listURL;
}
}
答案 0 :(得分:0)
我弄清楚问题是什么;我在.main活动中缺少一个字符串变量,它链接了listView活动中的项目。见下文(第一行)。
奖金 - 对于使用它的人:下面显示的webChromeClient中的onProgressChanged有一个预加载器,每次加载新URL时都会触发。只需在setContent(R.layout.myActivity)下面添加“pd”变量,然后复制&amp;通过mWebView.setWebClient块in2您的活动以及具有webView的活动。享受!
....
setContentView(R.layout.main);
activityTitle = (TextView) findViewById(R.id.app_name);
activityIcon = (ImageButton) findViewById(R.id.icon);
pd = ProgressDialog.show(this, "", "Initializing....", true);
.....
String url =getIntent().getStringExtra("url");// <-- Gets the URL that is passed from the list activity
mWebView= (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
activityTitle.setText("Loading....");
activity.setProgress(progress * 100);
pd.show();
if(progress == 100)
pd.dismiss();
activityTitle.setText(" flyDroid ELUA");
activityIcon.setImageResource(R.drawable.ic_menu_icon);
}
});