ListView的setOnItemClickListener()不起作用

时间:2016-08-08 15:56:47

标签: java android listview selection

This is chat which is to be translate

This is the activity using listview to show languages and i have to select one language and save it to translate chat

我有一个活动,其中我使用列表视图来显示使用bing api的所有语言,但是在语言选择活动崩溃时,我基本上必须将所选语言保存在变量中以供其他用途但它不起作用,  我写了下面的代码,不知道为什么这不起作用,虽然我尝试了各种方法,但不能完全理解这里的问题

public void initViews() {

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, GetAllValues());
    final ListView lang = (ListView) findViewById(R.id.select_lang);
    lang.setAdapter(adapter);
    loading = (ProgressBar) findViewById(R.id.pbLoading);
    loading.setVisibility(ProgressBar.INVISIBLE);

    lang.setOnItemClickListener(new AdapterView.OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
         // TODO Auto-generated method stub
         // Selected_Language = languages[parent.getSelectedItemPosition()];
         // Selected_Language = lang.getItemAtPosition(position).toString();
            Selected_Language = languages[parent.getSelectedItemPosition()].toString();
            new MessageChatAdapter(mcontext);
            writeToFile(Selected_Language);
            Toast.makeText(mcontext,"Language Saved", Toast.LENGTH_LONG).show();
            // When clicked, show a toast with the TextView text
        }
    });
}    

这是完整的java文件,代码在使用微调器时工作正常,但是当我使用listView时,它无效:

 package com.fyp.voicechat.ui;

 import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 import android.widget.ProgressBar;
 import android.widget.Toast;

 import com.fyp.voicechat.R;
 import com.fyp.voicechat.adapter.MessageChatAdapter;
 import com.memetix.mst.language.Language;

 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.util.Arrays;
 import java.util.Locale;

public class Setting_Activity extends Activity {
Language[] languages = Language.values();
public static String language;
ProgressBar loading;
public String Selected_Language;
public static Context mcontext;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_setting_);
    mcontext = this;

    initViews();
    Locale loc = new Locale("en");
    Log.i("-------------", Arrays.toString(loc.getAvailableLocales()));
}


public void initViews() {
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, GetAllValues());
    final ListView lang = (ListView) findViewById(R.id.select_lang);
    lang.setAdapter(adapter);
    loading = (ProgressBar) findViewById(R.id.pbLoading);
    loading.setVisibility(ProgressBar.INVISIBLE);

    lang.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            // TODO Auto-generated method stub
         // Selected_Language = languages[parent.getSelectedItemPosition()];
           // Selected_Language = lang.getItemAtPosition(position).toString();
            Selected_Language = languages[parent.getSelectedItemPosition()].toString();
            new MessageChatAdapter(mcontext);
            writeToFile(Selected_Language);
            Toast.makeText(mcontext,"Language Saved", Toast.LENGTH_LONG).show();
            // When clicked, show a toast with the TextView text
        }
    });
  /*  spin = (Spinner) findViewById(R.id.spin);
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, GetAllValues());
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spin.setAdapter(dataAdapter);
    send = (ImageView) findViewById(R.id.ivSend);
    //spin.setVisibility(Spinner.INVISIBLE);
    loading = (ProgressBar) findViewById(R.id.pbLoading);
    loading.setVisibility(ProgressBar.INVISIBLE);
    send.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Selected_Language = languages[spin.getSelectedItemPosition()].toString();
            new MessageChatAdapter(mcontext);
           writeToFile(Selected_Language);
            Toast.makeText(mcontext,"Language Saved", Toast.LENGTH_LONG).show();

        }
    });*/
}
private void writeToFile(String data) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("config.txt", Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    }
}
public String[] GetAllValues(){
    String lan[] = new String[languages.length];
    for(int i = 0; i < languages.length; i++){
        lan[i] = languages[i].name();
    }
    return lan;
}

}

0 个答案:

没有答案