- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这几天我遇到了一个奇怪的问题,我真的希望能在这里找到帮助。
我有一个使用 Baseadapter 和自定义单元格的 ListView。我的单元格拥有 ImageView 和 EditText。
我希望用户在 EditText 上输入评论并根据需要上传图片。但现在的问题是:如果我想将单元格上传到服务器,我什么也得不到。我无法读取 TextEdit 字段中的信息,我不知道为什么会这样。
这是我的基本适配器的代码:
package com.example.other;
import java.util.List;
import com.example.decidenow.R;
import com.example.item.AnswerItem;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
public class AnswerItemAdapter extends BaseAdapter {
private Context context;
protected List<AnswerItem> listCars;
private LayoutInflater inflater;
public AnswerItemAdapter(Context context, List<AnswerItem> listCars ) {
this.listCars = listCars;
this.inflater = LayoutInflater.from(context);
this.context = context;
}
public int getCount() {
return listCars.size();
}
public AnswerItem getItem(int position) {
return listCars.get(position);
}
public long getItemId(int position) {
return listCars.get(position).getID();
}
public View getView(int position, View convertView, ViewGroup parent) {
final AnswerItem car = listCars.get(position);
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = this.inflater.inflate(R.layout.new_poll_item,
parent, false);
holder.imageview = (ImageView) convertView
.findViewById(R.id.item_image);
holder.answer = (EditText) convertView
.findViewById(R.id.item_answer);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
car.setAnswer(holder.answer);
car.setImageView(holder.imageview);
holder.imageview.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Activity origin = (Activity) context;
origin.startActivityForResult(Intent.createChooser(intent, "uploading image"), car.getID());
}
});
return convertView;
}
private class ViewHolder {
ImageView imageview;
EditText answer;
}
}
我的自定义单元格:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:id="@+id/layout_answer"
android:padding="10dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:id="@+id/item_comment"
android:background="@color/main"
android:orientation="horizontal">
<TextView
android:text="@string/answer_box"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ecf0f1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_answer"
android:hint="@string/answer" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_weight="3.34">
<ImageView
android:contentDescription="@string/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_image"
android:src="@drawable/insert_photo"
android:layout_gravity="center_horizontal"
android:adjustViewBounds="true"
android:maxWidth="80dp"
android:maxHeight="80dp" />
</LinearLayout>
</LinearLayout>
存储单元格的AnswerItem:
package com.example.item;
import android.widget.EditText;
import android.widget.ImageView;
public class AnswerItem {
private EditText answer;
private ImageView view;
private int ID;
public AnswerItem(int i) {
ID = i;
}
public void setID(int i) {
ID = i;
}
public int getID() {
return ID;
}
public ImageView getImageView() {
return view;
}
public EditText getAnswer() {
return answer;
}
public void setImageView(ImageView v) {
view = v;
}
public void setAnswer(EditText a) {
answer = a;
}
}
这些是我的主要类(class)( Activity )的一些部分:
...
ListView list_poll_item;
AnswerItemAdapter adapter;
ArrayList<AnswerItem> arrayPolls = new ArrayList<>();
list_poll_item = (ListView) findViewById(R.id.list_answer);
list_poll_item.setAdapter(adapter);
...
arrayPolls.get(i).getAnswer().getText().toString()
不,我没有收到任何错误。我刚得到一个空的 EditText 字符串。
我真的希望你能帮助我这个问题很烦人。提前致谢。
编辑: 更新
我的适配器现在看起来像这样:
package com.example.other;
import java.util.List;
import com.example.decidenow.R;
import com.example.item.AnswerItem;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
public class AnswerItemAdapter extends BaseAdapter {
private Context context;
protected List<AnswerItem> listCars;
private LayoutInflater inflater;
public AnswerItemAdapter(Context context, List<AnswerItem> listCars ) {
this.listCars = listCars;
this.inflater = LayoutInflater.from(context);
this.context = context;
}
public int getCount() {
return listCars.size();
}
public AnswerItem getItem(int position) {
return listCars.get(position);
}
public long getItemId(int position) {
return listCars.get(position).getID();
}
public View getView(int position, View convertView, ViewGroup parent) {
final AnswerItem car = listCars.get(position);
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = this.inflater.inflate(R.layout.new_poll_item,
parent, false);
holder.imageview = (ImageView) convertView
.findViewById(R.id.item_image);
holder.answer = (EditText) convertView
.findViewById(R.id.item_answer);
holder.myTextWatcher = new MyTextWatcher(holder.answer);
holder.answer.addTextChangedListener(holder.myTextWatcher);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.answer.setText(car.getComment());
holder.myTextWatcher.setCar(car);
car.setImageView(holder.imageview);
holder.imageview.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Activity origin = (Activity) context;
origin.startActivityForResult(Intent.createChooser(intent, "uploading image"), car.getID());
}
});
return convertView;
}
private class ViewHolder {
EditText answer;
ImageView imageview;
MyTextWatcher myTextWatcher;
}
private class MyTextWatcher implements TextWatcher {
private AnswerItem car;
private EditText mEditText;
public MyTextWatcher(EditText mEditText) {
this.mEditText = mEditText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (car != null) {
car.setComment(mEditText.getText().toString());
}
}
public void setCar(AnswerItem car) {
this.car = car;
}
}
}
最佳答案
您的代码存在的问题是您假设每一行都有一个 EditText
。这是一个不正确的假设。您可能只有 4-5 个 EditText
实例,它们对您的所有行具有相同的值。
您可能需要做的是在您的 AnswerItem
中添加另一个字段和方法:
private String comment;
public String getComment(){
return comment;
}
public void setComment(String comment) {
return this.comment = comment;
}
然后在您的 getView()
中:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = this.inflater.inflate(R.layout.new_poll_item,
parent, false);
holder.imageview = (ImageView) convertView
.findViewById(R.id.item_image);
holder.answer = (EditText) convertView
.findViewById(R.id.item_answer);
holder.myTextWatcher = new MyTextWatcher(holder.answer);
holder.answer.addTextChangedListener(holder.myTextWatcher);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// The order needs to be exactly this way because setText will call
// AfterTextChanged on the previous row
holder.myTextWatcher.setCar(car);
holder.answer.setText(car.getComment());
car.setImageView(holder.imageview);
holder.imageview.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Activity origin = (Activity) context;
origin.startActivityForResult(Intent.createChooser(intent, "uploading image"), car.getID());
}
});
return convertView;
}
}
这是您需要的其他类(class):
private class ViewHolder {
EditText answer;
ImageView imageView;
MyTextWatcher myTextWatcher;
}
private class MyTextWatcher implements TextWatcher {
private Car car;
private EditText mEditText;
public MyTextWatcher(EditText mEditText) {
this.mEditText = mEditText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (car != null) {
car.setComment(mEditText.getText());
}
}
public void setCar(Car car) {
this.car = car;
}
}
关于Android Baseadapter TextEdit 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32703586/
这种布局有什么问题? 1) 当我以纵向模式打开应用程序时,这个 TextEdit 是可见的,直到我单击它以输入一些文本(只有
我正在为我的 Android 应用编写一个 JUnit 测试用例。测试类扩展 ActivityInstrumentationTestCase2 并调用 sendKeys() 来模拟 TextEdit
我想制作一个 TextEdit,它具有光标移动和可选文本但没有键盘(如计算器应用程序)。我尝试了一种在键盘出现后立即隐藏键盘的解决方案。但这真的很慢,它会在消失前出现片刻。 有没有更好的解决方案(an
有没有办法重新定义一些字符在 QML TextEdit 组件中的打印方式? 基本上我想要的只是用一些“箭头”图像替换所有选项卡。 最佳答案 不,那是不可能的。但是您可以用“箭头”字符替换要显示的文本中
我正在寻找一种方法来显示一个文本提示,说明预期的输入作为对用户的建议。以谷歌搜索栏为例: 是否有我缺少的属性,或者这是必须通过脚本来实现的? 最佳答案 Qt Quick 输入项上不存在该属性。您可以为
TL;DR: TextEdit仅当我单击它时才绘制突出显示的文本。没有什么帮助 我有一个 ListView与 QAbstractListModel具有字符串属性的模型。 正在对这些字符串属性进行拼写检
我想实现一个像 Apple TextEdit 这样的文本编辑器。于是我看了苹果的源码TextEdit 。我发现它的工具栏和我的不一样,没有字体,没有字体颜色。我的工具栏来自菜单格式 - 文本 - 显示
是否可以在 TextEdit 中选择(突出显示)一系列文本(通过 AppleScript、Cocoa 或 Carbon)?我尝试了这段代码但不起作用: set value of attribute "
使用 lsof 我可以知道 docx 文件仍然被 Word 打开,但是如何检测文本文件(rtf、txt 等)仍然被 TextEdit 打开? 最佳答案 基于 this thread ,您可以尝试以下操
我有一个包含文本编辑字段的 Android Activity 。这个想法是让用户输入一些带有“空白”的文本(最多 3 个)。使用以下函数插入空格: public void insertblank(Vi
我在表格布局中进行了多次文本编辑。使用较小的值,TextEdits 会延伸到屏幕的边缘。但是,较大的值会导致 TextEdits 扩展到屏幕边缘之外。如何始终将 textedit 宽度保持在屏幕边缘?
这几天我遇到了一个奇怪的问题,我真的希望能在这里找到帮助。 我有一个使用 Baseadapter 和自定义单元格的 ListView。我的单元格拥有 ImageView 和 EditText。 我希望
抱歉我的英语不好。我用谷歌翻译。我只是为安卓编写了一个游戏。对于我的问题,我在数组中进行游戏内检查。在这种情况下,它是显示的支票的值(value)。然后支票的金额会显示在文本编辑中并支付按钮。当按下按
我的问题涉及 PyQT5。我尝试创建一个带有按钮的对话框窗口,单击该按钮 更新 QTextEdit 字段的一些文本 调用一个函数(需要很长时间才能终止) 像这样: class StartDialog(
这是一个示例代码: ButtonEdit be = new ButtonEdit() { DisplayFormatString = MyDisplayFrm, MaskType =
我想设置 PYQT Qtextedit 小部件并使用它来监视另一个应用程序事件日志(如 Linux 上的 tail -f)。从长远来看,我担心它运行时间太长,并且使用大量内存来构建文本。是否可以设置一
当您在 TexBox/TexEdit 中书写时,如果文本大于控件的大小,它会向右滚动。 如何获取当前可见性偏移量或滚动长度? 为了说明我想要什么: 黑框代表全文。红色框是 TextEdit,包含文本的
是否可以在不更改 EditText 本身的字体的情况下设置 EditText View 的提示元素的字体?谢谢。 最佳答案 似乎没有办法分别控制提示的字体和文本的字体。 关于android - 在 T
我正在尝试使用软键盘,以便用户可以输入他的信息以在我的 Android 应用程序上创建一个新帐户。问题是我的一些 TextEdits 总是在屏幕外流动,用户看不到他实际输入的内容。屏幕看起来是这样的:
在 QLineEdit ,有一个textEdit()信号,仅在用户更改文本时发出,而不是在您调用 setText() 时发出, 那么 QTextEdit 中的等价物是什么? ?我只看到一个 textC
我是一名优秀的程序员,十分优秀!