
04/08/13, 17:41:16
|
|
Miembro del foro
|
|
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
|
|
pullToRefresh Libreria problema adapter
Hola comapñeros acabo de empezar a usar la libreria PullToRefresh para implementarla en una listaexpandible de rss que lleva mi proyecto , por lo que veo en los ejemplos se usa simpleexpandablelistadapter pero esto no me permite editar los items como yo quiero y uso un baseexpandablelistadapter en mi adapter, mi duda es que Los pulltorefresExpandableListView solo permiten ListAdapter y no el que yo uso , me da error en ListView.setadapter() porque no es un listadapter , como podría solucionar esto?
Mi java:
Código:
public class Rss extends SherlockActivity {
private String rssURL="http://www.amsspecialist.com/feed.php?";
private PullToRefreshExpandableListView Listview;
//private ExpandableListView ListView;
private RssAdapter adp;
private SharedPreferences Settings;
private Intent in;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rss);
Settings = PreferenceManager.getDefaultSharedPreferences(this);
Listview=(PullToRefreshExpandableListView )findViewById(R.id.expandableListView1);
Listview.setShowIndicator(false);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
loadRss rss=new loadRss(this);
rss.execute(rssURL);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.rss, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()) {
case R.id.config_rss:
startActivity(new Intent(getBaseContext(),
PreferenciasActivity.class));
break;
}
return true;
}
private class loadRss extends AsyncTask<String,Void,String> {
private ProgressDialog pDialog;
private Context context;
private ArrayList<rssItem> ListGroup;
private ArrayList<ArrayList<String>> ListChilds;
public loadRss(Context con){
this.context=con;
pDialog = new ProgressDialog(con);
}
@Override
protected void onPreExecute() {
pDialog.setMessage(getString(R.string.cargando));
pDialog.setCancelable(true);
pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
StringBuffer buf = new StringBuffer("");
try {
// Read all the text returned by the server
URL xmlUrl = new URL(params[0]);
InputStreamReader reader = new InputStreamReader(
xmlUrl.openStream(), "UTF-8");
BufferedReader in = new BufferedReader(reader);
String str;
while ((str = in.readLine()) != null) {
buf.append(str + "\r\t");
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return buf.toString();
}
@Override
protected void onPostExecute(String xml) {
try {
ListGroup = new ArrayList<rssItem>();
ListChilds=new ArrayList<ArrayList<String>>();
int rssentryes=Integer.parseInt(Settings.getString("rssentryes", "10"));
DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
Document doc = db.parse(is);
NodeList posts = doc.getElementsByTagName("entry");
for (int i = 0; i < posts.getLength(); i++) {
rssItem rss = new rssItem();
Element Post = (Element) posts.item(i);
Node title = Post.getElementsByTagName("title").item(0);
Log.d("title",title.getTextContent());
rss.setTitle(title.getTextContent());
Node link = Post.getElementsByTagName("id").item(0);
Log.d("link",link.getTextContent());
rss.setLink(link.getTextContent());
Node author = Post.getElementsByTagName("name").item(0);
Log.d("Author",author.getTextContent());
rss.setAuthor(author.getTextContent());
Node content = Post.getElementsByTagName(
"content").item(0);
Log.d("content",content.getTextContent());
rss.setContent(content.getTextContent());
ListGroup.add(rss);
ArrayList<String> c=new ArrayList<String>();
c.add(content.getTextContent());
ListChilds.add(c);
if(ListGroup.size() >= rssentryes) {
break;
}
}
adp = new RssAdapter(context, ListGroup,ListChilds);
Listview.setAdapter(adp);
}
catch (Exception ex) {
ex.printStackTrace();
}
pDialog.dismiss();
}
}
private class RssAdapter extends BaseExpandableListAdapter {
private ArrayList<rssItem> listGroup;
private ArrayList<ArrayList<String>> listChilds;
private Context context;
public RssAdapter(Context con,ArrayList<rssItem> groups,ArrayList<ArrayList<String>> childs) {
this.listGroup=groups;
this.listChilds=childs;
this.context=con;
}
@Override
public String getChild(int arg0, int arg1) {
// TODO Auto-generated method stub
return listChilds.get(arg0).get(arg1);
}
@Override
public long getChildId(int arg0, int arg1) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getChildrenCount(int arg0) {
// TODO Auto-generated method stub
return listChilds.get(arg0).size();
}
@Override
public Object getGroup(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return listGroup.size();
}
@Override
public long getGroupId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
private class ViewHolder{
TextView ttitle;
TextView tauthor;
TextView tcontent;
ImageButton imgbut;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = View.inflate(context, R.layout.rss_item, null);
holder.ttitle = (TextView) convertView
.findViewById(R.id.textView1);
holder.tauthor = (TextView) convertView
.findViewById(R.id.textView2);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
try
{
holder.ttitle.setText(listGroup.get(groupPosition).getTitle() + " ");
holder.tauthor.setText(getString(R.string.by) + " " + listGroup.get(groupPosition).getAuthor() + " ");
}catch(Exception ex){
ex.printStackTrace();
}
return convertView;
}
@Override
public View getChildView(final int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = View.inflate(context, R.layout.rss_subitem, null);
holder.tcontent = (TextView) convertView
.findViewById(R.id.textView1);
holder.imgbut = (ImageButton) convertView
.findViewById(R.id.imageButton1);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
try {
holder.tcontent.setText(Html.fromHtml(this.getChild(groupPosition,childPosition)));
holder.imgbut.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
in = new Intent(getBaseContext(), Web.class);
in.putExtra("Url", listGroup.get(groupPosition).getLink());
startActivity(in);
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}
}
}
|