Элемент ListView для веб-просмотра в основной деятельности - PullRequest
0 голосов
/ 12 апреля 2011

То, что я пытаюсь сделать, это загрузить URL-адрес в веб-представление в основном действии из заполненного элемента listView.Я не уверен, как это сделать, и я изучаю шаг за шагом, стараясь со временем приспособить это к заполнению listView базой данных, как только я изучу этот шаг (в этом вопросе).

Переменная getURLнеобходимо использовать для загрузки ссылки в mWebView в действии .main при щелчке объекта элемента списка.(имеет смысл ??) Спасибо за вашу помощь !!

Ниже приведено то, что у меня имеется:

действие 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 голосов
/ 13 апреля 2011

Я понял, в чем проблема; Мне не хватало строковой переменной в моей активности .main, которая связывает с элементом в активности listView. См. Ниже (Первая строка).

Бонус - для тех, кто использует его: onProgressChanged в webChromeClient, показанном ниже, имеет предварительный загрузчик, который запускается каждый раз, когда в него загружается новый URL. Просто добавьте переменную «pd» под setContent (R.layout.myActivity) и скопируйте и вставьте блок mWebView.setWebClient в свою деятельность, также имеющую 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); 
        }
    });
...