Home > OS >  Set adapter for listview in fragment instead of activity
Set adapter for listview in fragment instead of activity

Time:01-16

Hello!

I have tried to add a listview in a fragment but it doesn´t accept getApplicationContext:

adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, arrayList);

and this:

Toast.makeText(Todo.this, ""   parent.getItemAtPosition(position), Toast.LENGTH_SHORT).show();

How do I make it work for fragment instead of activity?

Code:

public class Todo extends Fragment {


    EditText editText;
    Button button;
    ListView listView;

    ArrayList<String> arrayList;
    ArrayAdapter<String> adapter;

    public Todo() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.todo, container, false);


        editText = editText.findViewById(R.id.editText);
        button = button.findViewById(R.id.button2);
        listView = listView.findViewById(R.id.list);

        arrayList = new ArrayList<>();
        adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, arrayList);
        listView.setAdapter(adapter);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String YeniVeri = editText.getText() .toString();
                arrayList.add(YeniVeri);
                adapter.notifyDataSetChanged();
                editText.setText("");
            }
        });

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(Todo.this, ""   parent.getItemAtPosition(position), Toast.LENGTH_SHORT).show();

            }
        });

        // Inflate the layout for this fragment
        return view;
    }
}

CodePudding user response:

use requireActivity() instead of getApplicationContext and "ActivityName.this"

CodePudding user response:

You can use requireActivity() or container.context in onCreatView. So you can also access "contex" via container. Exp(Kotlin):

   public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
   var mContext:Context? = container.context
  •  Tags:  
  • Related