android иногда метод getView () не работает - PullRequest
1 голос
/ 24 марта 2020

Я сделал просмотр списка. Но когда-то он исчез, и появился, когда я нажал кнопку поиска. Через logcat я узнал, что проблема в методе getView (). Иногда метод getView () не работает, но работает, когда я нажимаю кнопку поиска.

enter image description here

[Основная активность ] * Основная активность имеет функцию 'onCreateOptionsMenu', но функции для просмотра списка нет!

public class MainActivity extends AppCompatActivity {
    ListView listView;
    SingerItemView adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar myToolbar = findViewById(R.id.toolbar);
        setSupportActionBar(myToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        //listView
        listView = findViewById(R.id.listView);
        adapter = new SingerItemView(getApplicationContext());

        getListInfo info = new getListInfo(this);
        info.requestGet("MyserverAddress", "", "");
        listView.setAdapter(adapter);
    }
}

[SingerItemView]

public class SingerItemView extends BaseAdapter implements View.OnClickListener {
    private SingerItem mUser;
    private Context mContext;
    private TextView textCode;
    private ArrayList<SingerItem> mUserData;

    public SingerItemView(Context context) {
        super();
        mContext = context;
        mUserData = new ArrayList<SingerItem>();
    }

    @Override
    public int getCount() {
        return mUserData.size();
    }

    @Override
    public SingerItem getItem(int position) {
        return mUserData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        if (v == null) {
            v = ((LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                    .inflate(R.layout.singer_item, null);
        }

        textCode = v.findViewById(R.id.code);

        mUser = getItem(position);

        if (mUser != null) {
            textCode.setText(mUser.getCode());
        }
        return v;
    }
    public void add(SingerItem user) {
        mUserData.add(user);
    }
}
...