ListView项目到主活动中的webView

时间:2011-04-12 01:08:04

标签: android listview webview listadapter

我要做的是从填充的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;
     }   
}

1 个答案:

答案 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); 
        }
    });