Hej jag försöker ta bort en item från listview. Problemet är att när jag försöker ta bort rad 2 från listview samt i arrayen så tar den bort rad 1. När jag däremot klickar på rad 1 så tar den bort rad 1 som den ska.
Ser man i utskrift o loggen så är ändå rätt värde kvar i arrayen.
Kod:
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.BaseAdapter;
public class MyBrands extends Activity implements OnItemClickListener {
private static String userid;
private static ArrayList<GetBrands> subscribedBrands;
private static ListView listView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mybrands);
SharedPreferences preferences = getSharedPreferences("saleRacer", 0);
userid = preferences.getString("getId","");
JsonBrandSelected issubscribed = new JsonBrandSelected( userid, "testa2.php");
subscribedBrands = issubscribed.getSubscribed();
System.out.println("it has x children: " + subscribedBrands.size());
System.out.println("children name:");
for (GetBrands b : subscribedBrands) {
System.out.println(" id: " +b.getId() +
"name: " + b.getBrandNames()
);
}
listView = (ListView) findViewById(R.id.ListView01);
listView.setAdapter(new EfficientAdapter(this));
listView.setClickable(true);
listView.setOnItemClickListener(this);
}
private static class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private int counter;
public EfficientAdapter(Context context) {
mInflater = LayoutInflater.from(context);
counter = 0;
// this.subscribedBrands = subscribedBrands;
}
public int getCount() {
// TODO Auto-generated method stub
return subscribedBrands.size();
}
public Object getItem(int position) {
return 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.listview, null);
holder = new ViewHolder();
holder.text2 = (TextView) convertView.findViewById(R.id.brandname);
System.out.println("build2 id: " + subscribedBrands.get(position).getId() +
"position: " + position +
"name: " + subscribedBrands.get(position).getBrandNames());
holder.text2.setText(subscribedBrands.get(position).getBrandNames());
holder.text2.setTextColor(Color.RED);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
static class ViewHolder {
TextView text2;
}
}
// private ArrayList <Integer> selectedIds = new ArrayList<Integer>();
/** Called when the activity is first created. */
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.allbrands, menu);
return true;
}
// decide what the menuitems will do
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.allbrands:
Intent intent = new Intent(MyBrands.this, Main.class);
intent.putExtra("tab",3);
startActivity(intent);
break;
}
return false;
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
int selectedId = subscribedBrands.get(arg2).getId();
System.out.println("tar bort: " + arg2 +
"brand id: " + selectedId +
" name: " + subscribedBrands.get(arg2).getBrandNames());
JsonUpdateUBrands reader = new JsonUpdateUBrands( selectedId, userid, "testa2.php");
subscribedBrands.remove(arg2);
System.out.println("whats left?");
for (GetBrands b: subscribedBrands) {
System.out.println("id:" + b.getId() +
" name: " + b.getBrandNames());
}
listView.invalidateViews();