2016-08-03 3 views
0

Я хочу очистить содержимое editText. Когда нажата кнопка «Назад» при вводе текста, она должна свести к минимуму клавиатуру и вернуть меня в начальный список. Теперь это приложение прямо существует. И клавиатура появляется на экране после запуска приложения ... .instead я хочу, чтобы она появилась, когда пользователь нажимает на EditText .....очистить содержимое editText при нажатии кнопки

Вот мой код:

package com.example.acer.aartisangrah; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

import java.util.ArrayList; 

public class first extends AppCompatActivity { 
EditText editText; 
private ListView listView; 

private String[] names = {"प्रार्थना", "सुखकर्ता दु:खहर्ता", "गजानना श्रीगणराया", "येई हो विठ्ठले", "लवथवती विक्राळा", "दुर्गे दुर्घट भारी", "आरती ज्ञानराजा", 
     "हे भोळ्या शंकरा", "ओवाळू", "मंगेशा महारूद्रा", "आला गणराया", "शेंदुर लाल चढायो", "एकदंता", "कर्पूर गौरा", "हे गजवधना", "प्रथमेश्वरा", "जयदेवा हे साईनाथा", 
     "श्री सत्यनारायणाची आरती", "श्री महालक्ष्मीची आरती", "ॐ जय लक्ष्मी माता", "आरती संतोषी माता की", "धन्य धन्य हो प्रदक्षिणा", "सुखंकर्ता की दु:खहर्ता", 
     "ॐ जय जगदीश", "हे गौरी गजानन", "घालीन लोटांगण"}; 
private int imageid[] = {R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, 
     R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, 
     R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, 
     R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji, R.drawable.ganeshaji}; 
int textlength = 0; 
ArrayList<String> text_sort = new ArrayList<String>(); 

ArrayList<Integer> image_sort = new ArrayList<Integer>(); 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_first); 
    listView = (ListView) findViewById(R.id.listView); 
    editText = (EditText) findViewById(R.id.inputSearch); 
    listView.setAdapter(new MyCustomAdapter(names, imageid)); 
    editText.addTextChangedListener(new TextWatcher() 

    { 
     public void afterTextChanged(Editable s) { 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      textlength = editText.getText().length(); 
      text_sort.clear(); 
      image_sort.clear(); 
      for (int i = 0; i < names.length; i++) { 
       if (textlength <= names[i].length()) { 
        if (editText.getText().toString().equalsIgnoreCase((String) names[i].subSequence(0, textlength))) { 
         text_sort.add(names[i]); 
         image_sort.add(imageid[i]); 
        } 
       } 
      } 
      listView.setAdapter(new MyCustomAdapter(text_sort, image_sort)); 
     } 

    }); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      TextView tv = (TextView) view.findViewById(R.id.textViewName); 
      String strSelectedString = tv.getText().toString(); 
      for (int selectedPosition = 0; selectedPosition < names.length; selectedPosition++) { 
       if (names[selectedPosition].equalsIgnoreCase(strSelectedString)) { 
        moveToNextActivity(selectedPosition); 
        break; 
       } 
      } 

     } 
    }); 
} 


public void moveToNextActivity(int position) { 
    if (position == 0) { 
     Intent myIntent = new Intent(getApplicationContext(), akalp.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if (position == 1) { 
     Intent myIntent = new Intent(getApplicationContext(), Sukharta.class); 
     startActivityForResult(myIntent, 0); 
    } 

    if (position == 2) { 
     Intent myIntent = new Intent(getApplicationContext(), gajananashriganraya.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 3) { 
     Intent myIntent = new Intent(getApplicationContext(), yehihovittale.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 4) { 
     Intent myIntent = new Intent(getApplicationContext(), lavathavthi.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 5) { 
     Intent myIntent = new Intent(getApplicationContext(), durgedurgat.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 6) { 
     Intent myIntent = new Intent(getApplicationContext(), nyanraja.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 7) { 
     Intent myIntent = new Intent(getApplicationContext(), bolya.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 8) { 
     Intent myIntent = new Intent(getApplicationContext(), vovalo.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 9) { 
     Intent myIntent = new Intent(getApplicationContext(), mangesha.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 10) { 
     Intent myIntent = new Intent(getApplicationContext(), alaganraya.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 11) { 
     Intent myIntent = new Intent(getApplicationContext(), shendorlal.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 12) { 
     Intent myIntent = new Intent(getApplicationContext(), ekdanta.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 13) { 
     Intent myIntent = new Intent(getApplicationContext(), karpurgaura.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 14) { 
     Intent myIntent = new Intent(getApplicationContext(), heygajavadana.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 15) { 
     Intent myIntent = new Intent(getApplicationContext(), prathmeshvara.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 16) { 
     Intent myIntent = new Intent(getApplicationContext(), sainatha.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 17) { 
     Intent myIntent = new Intent(getApplicationContext(), satyanarayan.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 18) { 
     Intent myIntent = new Intent(getApplicationContext(), jaidevijaidevi.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 19) { 
     Intent myIntent = new Intent(getApplicationContext(), omjaimahalakshmi.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 20) { 
     Intent myIntent = new Intent(getApplicationContext(), maitohaarti.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 21) { 
     Intent myIntent = new Intent(getApplicationContext(), danyadanyaho.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 22) { 
     Intent myIntent = new Intent(getApplicationContext(), sukhartakidukharta.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 23) { 
     Intent myIntent = new Intent(getApplicationContext(), omjaijagdish.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 24) { 
     Intent myIntent = new Intent(getApplicationContext(), heygaurigajanana.class); 
     startActivityForResult(myIntent, 0); 
    } 
    if (position == 25) { 
     Intent myIntent = new Intent(getApplicationContext(), ghalinlotangan.class); 
     startActivityForResult(myIntent, 0); 
    } 
} 

class MyCustomAdapter extends BaseAdapter { 
    String[] data_text; 
    int[] data_image; 

    MyCustomAdapter() { 

    } 

    MyCustomAdapter(String[] names, int[] imageid) { 
     data_text = names; 
     data_image = imageid; 
    } 

    MyCustomAdapter(ArrayList<String> names, ArrayList<Integer> imageid) { 
     data_text = new String[names.size()]; 
     data_image = new int[imageid.size()]; 
     for (int i = 0; i < names.size(); i++) { 
      data_text[i] = names.get(i); 
      data_image[i] = imageid.get(i); 
     } 
    } 

    public int getCount() { 
     return data_text.length; 
    } 

    public String getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = getLayoutInflater(); 
     View row; 
     row = inflater.inflate(R.layout.list_layout, parent, false); 
     TextView textview = (TextView) row.findViewById(R.id.textViewName); 
     ImageView imageview = (ImageView) row.findViewById(R.id.imageView); 
     textview.setText(data_text[position]); 
     imageview.setImageResource(data_image[position]); 
     return (row); 
    } 
} 
} 

ответ

1

Вам нужно будет переопределить метод onBackPressed() в actiivty так, что не закончена

@Override 
public void onBackPressed(){ 
    edittext.setText(""); 
    listView.setSelection(0); 
    //or 
    listView.smoothScrollToPosition(0); 
} 

A ab ove установит edittext в пустую строку, а затем переместит ваш список назад к индексу 0, когда вы нажмете кнопку «Назад».

https://developer.android.com/reference/android/app/Activity.html#onBackPressed()

EDIT

Так что для того, чтобы все-таки закрыть приложение, если вы находитесь в верхней части ListView, вам нужно будет добавить некоторую логику, чтобы отслеживать, где вы находитесь в вашем Посмотреть список. Самый простой способ - создать логическое значение, которое вы измените в прослушивающем прокрутке списка.

public class first extends AppCompatActivity { 
EditText editText; 
private ListView listView; 
boolean atTop; --> add this variable here. This will monitor our top status. 
...// rest of logic 

Затем нам нужно применить scrollListener к вашему списку в вашем onCreate.

listView.setOnScrollListener(new AbsListView.OnScrollListener() { 
      @Override 
      public void onScrollStateChanged(AbsListView absListView, int i) { 

      } 

      @Override 
      public void onScroll(AbsListView absListView, int i, int i1, int i2) { 
       if(i == 0){ 
        View v = myListView.getChildAt(0); 
        int offset = (v == null) ? 0 : v.getTop(); 
        if (offset == 0) { 
         atTop = true; 
         return; 
        } 
       }else{ 
        atTop = false; 
       } 
      } 
}); 

В onscroll мы, по сути, проверяем, находимся ли мы наверху или где-то еще. Мы не проверяем дно, поэтому это должно работать практически в любом месте. Тогда в вашем onBackPressed вы бы сделать этого нужно просто:

@Override 
public void onBackPressed(){ 
    if(atTop){ 
      super.onBackPressed(); 
    }else { 
      edittext.setText(""); 
      listView.setSelection(0); 
      //or 
      listView.smoothScrollToPosition(0); 
     } 
} 

Так что теперь, если мы находимся на вершине мы хотим onBackPressed запустить такой же, как обычно. Если нам не ясно текст редактирования и прокрутите вверх.

+0

Теперь проблема заключается в возвращении в основной список, нажатие на кнопку «Назад» должно закрыть приложение .... выше решение решает проблему редактирования editText .... – Devk

+0

Так что, если он закрыт, если hte edittext пуст или если вы по индексу 0 в списке? – basic

+0

Я должен закрыть только тогда, когда индекс 0 ..... если пользователь печатает и хочет вернуться к индексу 0 .... нажатие кнопки возврата должно очистить содержимое edittext и перейти к index0 – Devk

Смежные вопросы