按下后退按钮清除editText的内容

时间:2016-08-03 20:17:45

标签: java android listview search

我想清除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 个答案:

答案 0 :(得分:1)

你需要在你的活动中覆盖你的onBackPressed()方法,以便它不会完成

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

上面将edittext设置为空字符串,然后在单击后退按钮时将列表视图移回索引0。

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

修改

因此,如果您位于列表视图的顶部仍然关闭应用程序,则需要添加一些逻辑来跟踪列表视图中的位置。最简单的方法是创建一个在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。

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能够像往常一样运行。如果我们不清楚编辑文本并滚动到顶部。