首先我有一个可以正常工作的自定义适配器。然后我为listview实现quickreturn。现在适配器类给了我一个越界异常。我尝试更改getCount返回值,但它仍然给出错误。
我的适配器类:
<?xml version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="p">
<out>
<xsl:value-of select='text()'/>
</out>
</xsl:template>
</xsl:stylesheet>
它给出了这个错误:
public class KanalAdapter extends BaseAdapter {
Context context;
String charset;
String query;
String kanaladi;
String veritabani_id;
ArrayList<OfficialKanal> officialKanals;
ArrayList<NormalKanal> normalKanals;
ArrayList<Object> kanallar = new ArrayList();
ArrayList<Kanal> channelbaba;
int OFFICIAL_KANAL = 0;
int NORMAL_KANAL= 1;
LayoutInflater lala;
KanalaElemanEkle kEE;
public KanalAdapter(Context context , ArrayList<OfficialKanal> officiallar , ArrayList<NormalKanal> normaller
, ArrayList<Kanal> channelbaba){
this.context = context;
officialKanals = officiallar;
normalKanals = normaller;
this.channelbaba = channelbaba;
for(int i = 0 ; i < officiallar.size() ; i++){
kanallar.add(officiallar.get(i));
}
for(int i = 0 ; i < normaller.size() ; i++){
kanallar.add(normaller.get(i));
}
Log.i("tago" , "tagtag");
veritabani_id = SharedIdCek();
lala = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private String SharedIdCek() {
SharedPreferences sp = context.getSharedPreferences("kullaniciverileri", Context.MODE_PRIVATE);
String veritabani_id = sp.getString("veritabani_id", "default id");
return veritabani_id;
}
public int getCount() {
Log.i("tago" , "getCount ="+(channelbaba.size()+1));
return (channelbaba.size()+1);
}
public Object getItem(int i) {
Log.i("tago" , "getItem = " + channelbaba.get(i));
return channelbaba.get(i);
}
public long getItemId(int i) {
Log.i("tago" , "getItemId =" + i);
return i;
}
public int getItemViewType(int position) {
Object item = getItem(position);
Kanal kanal = (Kanal)item;
if(kanal.official){
return OFFICIAL_KANAL;
}else if(!kanal.official){
return NORMAL_KANAL;
}
return -1;
}
public int getViewTypeCount() {
return 2;
}
public View getView(int position, View convertView, ViewGroup viewGroup) {
KanalHolder holder = null;
final int pozisyon = position;
Object currentKanal = getItem(position);
Kanal kanal = (Kanal) currentKanal;
if(convertView==null) {
holder = new KanalHolder();
if (kanal.official) {
convertView = lala.inflate(R.layout.officialkanal, null);
holder.image2 = (ImageView) convertView.findViewById(R.id.imageView5);
holder.tv3 = (TextView) convertView.findViewById(R.id.textView4);
holder.tv4 = (TextView) convertView.findViewById(R.id.textView8);
holder.buton1 = (ImageButton) convertView.findViewById(R.id.button7);
holder.buton2 = (ImageButton) convertView.findViewById(R.id.button8);
holder.buton3 = (ImageButton) convertView.findViewById(R.id.imageButton7);
Log.i("tago", "tagtagatagtagtagatg");
}
if (!kanal.official) {
convertView = lala.inflate(R.layout.normalkanal, null);
holder.image1 = (ImageView) convertView.findViewById(R.id.imageView5);
holder.tv1 = (TextView) convertView.findViewById(R.id.textView4);
holder.tv2 = (TextView) convertView.findViewById(R.id.textView8);
Log.i("tago", "tagtagtag");
}
convertView.setTag(holder);
}else{
holder = (KanalHolder)convertView.getTag();
}
if(kanal.official){
Drawable a = ContextCompat.getDrawable(context , R.drawable.taylanprof);
holder.image2.setBackground(a);
holder.tv3.setText(channelbaba.get(position).getKanaladi());
holder.image2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
kEE = new KanalaElemanEkle();
kEE.execute(kanaladi);
Intent intent = new Intent(context , GrupSohbeti.class);
context.startActivity(intent);
}
});
}
if(!kanal.official){
holder.image1.setImageResource(R.mipmap.apoprof);
holder.tv1.setText(channelbaba.get(position).getKanaladi());
holder.image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
kanaladi = channelbaba.get(pozisyon).getKanaladi();
Log.i("tago" , kanaladi);
kEE = new KanalaElemanEkle();
kEE.execute(kanaladi);
Intent intent = new Intent(context , GrupSohbeti.class);
intent.putExtra("kanaladi" , kanaladi);
context.startActivity(intent);
}
});
}
return convertView;
}
static class KanalHolder{
public ImageView image1,image2;
public TextView tv1 , tv2,tv3,tv4;
public ImageButton buton1,buton2,buton3;
}
private class KanalaElemanEkle extends AsyncTask<String,Void,String>{
protected String doInBackground(String... params) {
charset = "utf-8";
String param1 = "id";
String param2 = "name";
try {
query = String.format("param1=%s¶m2=%s", URLEncoder.encode(param1, charset), URLEncoder.encode(param2, charset));
} catch (IOException e) {
e.printStackTrace();
}
Log.i("tago", "KanalAdapter kanala eleman ekleme ba�lat�ld�");
try {
return kanaliekle(params[0]);
} catch (Exception e) {
e.printStackTrace();
return "olmadi";
}
}
private String kanaliekle(String kanaladi) {
HttpURLConnection sconnection = null;
try {
sconnection = (HttpURLConnection) new URL("http://www.ceng.metu.edu.tr/~e1818871/shappy/join_us.php?id=" + veritabani_id + "&name=" + kanaladi).openConnection();
Log.i("tago", "Page Fragment1 yeni kanal kur bagı kuruldu");
} catch (IOException e) {
e.printStackTrace();
}
sconnection.setDoOutput(true);
sconnection.setDoInput(true);
sconnection.setRequestProperty("User-Agent", "Mozilla/5.0 ( compatible ) ");
sconnection.setRequestProperty("Accept", "* /*");
sconnection.setRequestProperty("Accept-Charset", charset);
sconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
try {
OutputStream output = new BufferedOutputStream(sconnection.getOutputStream());
output.write(query.getBytes(charset));
output.close();
int a = sconnection.getResponseCode();
String b = sconnection.getResponseMessage();
Log.i("tago", "rerere" + a + " " + b);
} catch (IOException e) {
e.printStackTrace();
}
return "alabama";
}
}
}
我该如何解决这个问题?
答案 0 :(得分:0)
public int getCount() { Log.i("tago" , "getCount ="+(channelbaba.size()+1)); return (channelbaba.size()+1); }
try returing kanal.size() or try removing +1 if the size of kanal and channelbaba are same