1

I am making an app , which takes a number as input and generates that many input fields in a list , Those input fields must be EditTexts.

and after the user enters say 6 values in those edittexts , I must be able to read them into my code for further processing . Please help i've tried alot online but havent found any help . It's always crashing.

The code below is what i wrote as a temporary replacement for the above. I really have no clue how to set edittexts in a listview and start reading from them.

Thanks in advance !

package com.example.vineeth.customlistviewmytrail;

import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {



    EditText et_period1,et_period2,et_period3,et_period4,et_period5,et_period6,et_period7,et_period8;
    EditText et_number;
    Button bt_submit,bt_submit2;





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

        et_number = (EditText) findViewById(R.id.et_number);
        bt_submit = (Button)findViewById(R.id.bt_submit);
        bt_submit2=(Button)findViewById(R.id.bt_submit2);


        et_period1 = (EditText) findViewById(R.id.et_period1);
        et_period2 = (EditText) findViewById(R.id.et_period2);
        et_period3 = (EditText) findViewById(R.id.et_period3);
        et_period4 = (EditText) findViewById(R.id.et_period4);
        et_period5 = (EditText) findViewById(R.id.et_period5);
        et_period6 = (EditText) findViewById(R.id.et_period6);
        et_period7 = (EditText) findViewById(R.id.et_period7);
        et_period8 = (EditText) findViewById(R.id.et_period8);


        bt_submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {



                int number = Integer.parseInt(et_number.getText().toString());

                if(number < 2)
                {
                    Toast.makeText(MainActivity.this, "Do not troll", Toast.LENGTH_SHORT).show();
                }

                if(number==2)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.INVISIBLE);
                    et_period4.setVisibility(View.INVISIBLE);
                    et_period5.setVisibility(View.INVISIBLE);
                    et_period6.setVisibility(View.INVISIBLE);
                    et_period7.setVisibility(View.INVISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number == 3)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.INVISIBLE);
                    et_period5.setVisibility(View.INVISIBLE);
                    et_period6.setVisibility(View.INVISIBLE);
                    et_period7.setVisibility(View.INVISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number==4)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.VISIBLE);
                    et_period5.setVisibility(View.INVISIBLE);
                    et_period6.setVisibility(View.INVISIBLE);
                    et_period7.setVisibility(View.INVISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number==5)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.VISIBLE);
                    et_period5.setVisibility(View.VISIBLE);
                    et_period6.setVisibility(View.INVISIBLE);
                    et_period7.setVisibility(View.INVISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number==6)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.VISIBLE);
                    et_period5.setVisibility(View.VISIBLE);
                    et_period6.setVisibility(View.VISIBLE);
                    et_period7.setVisibility(View.INVISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number==7)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.VISIBLE);
                    et_period5.setVisibility(View.VISIBLE);
                    et_period6.setVisibility(View.VISIBLE);
                    et_period7.setVisibility(View.VISIBLE);
                    et_period8.setVisibility(View.INVISIBLE);
                }
                if(number==8)
                {
                    et_period1.setVisibility(View.VISIBLE);
                    et_period2.setVisibility(View.VISIBLE);
                    et_period3.setVisibility(View.VISIBLE);
                    et_period4.setVisibility(View.VISIBLE);
                    et_period5.setVisibility(View.VISIBLE);
                    et_period6.setVisibility(View.VISIBLE);
                    et_period7.setVisibility(View.VISIBLE);
                    et_period8.setVisibility(View.VISIBLE);
                }

            }
        });


        bt_submit2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String period1,period2,period3,period4,period5,period6,period7,period8;

                period1 = et_period1.getText().toString();
                period2 = et_period2.getText().toString();
                period3 = et_period3.getText().toString();
                period4 = et_period4.getText().toString();
                period5 = et_period5.getText().toString();
                period6 = et_period6.getText().toString();
                period7 = et_period7.getText().toString();
                period8 = et_period8.getText().toString();


                Intent i = new Intent(MainActivity.this,Main2Activity.class);
                i.putExtra("period1",period1);
                i.putExtra("period2",period2);
                i.putExtra("period3",period3);
                i.putExtra("period4",period4);
                i.putExtra("period5",period5);
                i.putExtra("period6",period6);
                i.putExtra("period7",period7);
                i.putExtra("period8",period8);

                startActivity(i);



            }
        });








    }
}
CodenameLambda
  • 1,486
  • 11
  • 23
Vineeth Sai
  • 3,389
  • 7
  • 23
  • 34
  • What you have tried ? post your code. – Nambi Dec 24 '16 at 12:26
  • Please post your code – UkFLSUI Dec 24 '16 at 12:27
  • I've tried combining few codes till it made no sense :( I dont have a good understanding on Custom List Views :( – Vineeth Sai Dec 24 '16 at 12:29
  • @VineethSai Don't worry about your error prone codes. Whatever you have tried so far in Android Studio or Eclipse, please feel free to add those codes in your post. – UkFLSUI Dec 24 '16 at 12:34
  • @RakibulIslam here's the code which i wrote as temporary workaround. And i am still a beginner :( – Vineeth Sai Dec 24 '16 at 12:41
  • @VineethSai Well done. You are a beginner, that's not the problem. But without viewing the code, it is hard to understand the exact problem. Now someone specialist in this matter will help you, surely. And one advice, please try to give exact credit to the correct answers posted to your question by voting up or selecting it as correct answer. – UkFLSUI Dec 24 '16 at 12:45
  • @RakibulIslam Sure ! Thanks alot – Vineeth Sai Dec 24 '16 at 12:47

1 Answers1

-1

This is a wide issue. Hence I found two alternatives and better solutions.

  1. Using a dialog with EditText to take input:

    Whenever you click an item in ListView or RecyclerView, open an AlertDialog with EditText. Take the input and store in an ArrayList in the main class. Check this out to make AlertDialog with EditText.

  2. Inflate EditText Views dynamically and store in ArrayList:

    Checkout this code

    public class ServicesInputActivity {
    
    private static final String TAG = SearchResultsActivity.class.getSimpleName();
    
    private LinearLayout inputContainer;
    private LinearLayout.LayoutParams params;
    private List<EditText> inputViewList;
    private FloatingActionButton fabButton;
    
    private SuggestionResult result;
    
    private ArrayList<String> phraseList;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_form_bullets);
        init();
    
        setInit();
    }
    
    
    private void init() {
        inputContainer=(LinearLayout)findViewById(R.id.innerLinearLayout);
        fabButton=(FloatingActionButton)findViewById(R.id.fabBullet);
        inputViewList=new ArrayList<>();
    }
    
    private void setInit() {
        addInputView();
    
        fabButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addInputView();
            }
        });
    }
    
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.suggestion_menu,menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return super.onOptionsItemSelected(item);
    }
    
    private void addInputView() {
        final EditText inputView=new EditText();
        final View v=getLayoutInflater().inflate(R.layout.service_input_item,inputContainer,false);
        inputView=(EditText) v.findViewById(R.id.phrase));
        inputView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId== EditorInfo.IME_ACTION_NEXT){
                    Log.i(TAG, "onEditorAction: ");
                    if(!TextUtils.isEmpty(v.getText().toString())) {
                        addInputView();
                    }
                }
                return false;
            }
        });
    
        inputViewList.add(inputView);
        inputContainer.addView(v);
    }
    }
    

    XML

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:gravity="center_vertical"
    android:background="@drawable/input_bg">
    
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/phrase"
        android:padding="10dp"
        android:textColorHint="@color/gray"
        android:textColor="@color/white"
        android:singleLine="true"
        android:imeOptions="actionNext"
        android:hint="Enter phrase"
        android:background="@null"
        android:layout_marginLeft="10dp"/>    
    </LinearLayout>
    
Community
  • 1
  • 1
Prince Bansal
  • 1,635
  • 15
  • 24