My BaseAdapter отлично работает, но когда я прокручиваю список, каждый элемент является двойным. Я не знаю, как я могу остановить это.Как остановить обновление списка при прокрутке?
Ниже представлен массив с сервера PHP. Сервер PHP отправляет это как строку json.
Array
(
[0] => Array
(
[i] => 122:133:155:201:159:113:153:202:220:222:221:225:109
[j] => 8
[r] => 9a
)
[1] => Array
(
[i] => 205:182:221
[j] => 9
[r] => 10
)
[2] => Array
(
[i] =>
[j] => 10
[r] => 11
)
[3] => Array
(
[i] => 101:102:132
[j] => 12
[r] => 13
)
)
Это активность:
public class Strefa extends Activity {
AdapterStrefa mListAdapter;
ListView listview;
ArrayList<ListData> myList = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(GlobalConfig.tryb) {
setTheme(R.style.AppTheme_Dark);
setContentView(R.layout.n_strefa);
} else {
//setContentView(R.layout.d_statystyki);
}
GlobalConfig config = new GlobalConfig();
JSONArray JsonArray = config.getJsonArray();
for (int i = 0; i < JsonArray.length(); i++) {
try {
JSONObject jsonObject = JsonArray.getJSONObject(i);
int r = jsonObject.getInt("j");
ListData ld = new ListData();
ld.setAdres(jsonObject.getString("i"));
ld.setStrefa(jsonObject.getString("r") + ":");
myList.add(ld);
} catch (JSONException e) {
e.printStackTrace();
}
}
listview = (ListView) findViewById(R.id.listView);
mListAdapter = new AdapterStrefa(this, myList);
listview.setAdapter(mListAdapter);
/* Powrót */
Button Back = (Button) findViewById(R.id.back);
Back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
Это мой BaseAdaper:
public class AdapterStrefa extends BaseAdapter {
ArrayList myList = new ArrayList();
LayoutInflater inflater;
Context context;
public AdapterStrefa(Context context, ArrayList myList) {
this.myList = myList;
this.context = context;
inflater = LayoutInflater.from(this.context);
}
@Override
public int getCount() {
return myList.size();
}
@Override
public ListData getItem(int position) {
return (ListData) myList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder mViewHolder;
if(convertView == null) {
if(GlobalConfig.tryb) {
convertView = inflater.inflate(R.layout.n_strefa_item, parent, false);
} else {
convertView = inflater.inflate(R.layout.d_zlecenia_lista, parent, false);
}
mViewHolder = new MyViewHolder(convertView);
convertView.setTag(mViewHolder);
}else {
mViewHolder = (MyViewHolder) convertView.getTag();
}
ListData currentListData = getItem(position);
mViewHolder.strefa.setText(currentListData.getStrefa());
mViewHolder.dzielnica.setText(currentListData.getDzielnica());
//mViewHolder.layout.setText(currentListData.getAdres());
String CurrentString = currentListData.getAdres();
String[] separated = CurrentString.split(":");
for(int i = 0; i < separated.length; i++) {
if(!separated[i].isEmpty()) {
Button button = new Button(context, null, android.R.attr.buttonStyleSmall);
button.setText(context.getString(R.string.string, separated[i]));
mViewHolder.layout.addView(button);
}
}
return convertView;
}
private class MyViewHolder {
TextView strefa, dzielnica;
LinearLayout layout;
public MyViewHolder(View item) {
strefa = (TextView) item.findViewById(R.id.strefa);
dzielnica = (TextView) item.findViewById(R.id.dzielnica);
layout = (LinearLayout) item.findViewById(R.id.layout);
}
}
}
Я хотел бы, чтобы каждый товар создавать кнопки из строки JSON. например Когда первый элемент массива json имеет строку: 205: 182: 221, нужно создать три кнопки в элементе. Когда я просматриваю список, каждый элемент двойной. Как я могу остановиться вдвое?
Что вы подразумеваете под * каждый пункт двойной *? Также, пожалуйста, напишите код, в котором вы разбираете JSON и создаете адаптер. – Rohit5k2
My BaseAdapter создает три кнопки, и это очень хорошо, если первый элемент jsonarray имеет строку: 205: 182: 221, но когда я просматриваю свой список, каждый элемент реплицирует данные, поэтому первый элемент имеет шесть кнопок, девять и т. Д. Это происходит всякий раз, когда я скрыть элемент списка, а затем отобразиться при прокрутке. – SeaDog
Обратите внимание, что мой ответ работает на вас. – Rohit5k2